一、安装 stm32CubeMX,配合Keil,使用HAL库
目录
一、安装 stm32CubeMX,配合Keil,使用HAL库
1.1安装jdk
由于STM32CubeMX是Java实现的,需要安装jdk环境。
jdk官网下载链接:
Java Downloads | Oracle
1.2安装STM32CubeMX
1.下载地址:
https://www.st.com/en/development-tools/stm32cubemx.html
2.安装过程
①以管理员身份运行并安装 SetupSTM32CubeMX-4.27.0.exe
,进入下面这个界面后,点击Next
二、HAL库使用教程
当使用STM32系列微控制器时,HAL(Hardware Abstraction Layer)库是一个非常有用的工具,它可以简化硬件操作并提高代码的可移植性。
2.1. 创建工程:
使用STM32CubeMX创建一个新的工程,并选择你的微控制器型号。
2.2. 配置引脚:
在STM32CubeMX中,配置你的引脚,包括外设功能、引脚类型和初始化状态。例如,如果你想要控制一个LED,选择一个GPIO引脚并将其配置为输出。
2.3. 生成代码:
在STM32CubeMX中生成代码,它会自动生成工程文件和初始化代码。
2.4. 在IDE中打开工程:
使用你喜欢的集成开发环境(IDE),如Keil、STM32CubeIDE等,打开生成的工程。
2.5. 编写应用代码:
在主文件(通常是main.c)中编写应用程序代码。以下是一个简单的示例代码,假设你要控制一个LED连接到GPIOB的第0号引脚:
2.6. 编译和下载:
使用你的IDE编译工程,并将程序下载到微控制器中。
2.7. 调试:
启动调试器,检查代码的运行情况。如果一切正常,LED应该会每隔1秒交替点亮和关闭。
三、使用HAL库开发LED流水灯和中断模式编程控制LED
3.1GPIO函数:
HAL_GPIO_WritePin函数:写入引脚高低电平
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
{
/* Check the parameters */
assert_param(IS_GPIO_PIN(GPIO_Pin));
assert_param(IS_GPIO_PIN_ACTION(PinState));
if (PinState != GPIO_PIN_RESET)
{
GPIOx->BSRR = GPIO_Pin;
}
else
{
GPIOx->BSRR = (uint32_t)GPIO_Pin << 16u;
}
}
2.HAL_GPIO_TogglePin函数:引脚电平翻转
void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
{
uint32_t odr;
/* Check the parameters */
assert_param(IS_GPIO_PIN(GPIO_Pin));
/* get current Output Data Register value */
odr = GPIOx->ODR;
/* Set selected pins that were at low level, and reset ones that were high */
GPIOx->BSRR = ((odr & GPIO_Pin) << GPIO_NUMBER) | (~odr & GPIO_Pin);
}
3.2CubeMX创建
1.新建项目:
2.选择芯片
3.SYS选择
4.RCC选择
创建完成配置:
3.3生成代码:
想要实现LED1、LED2周期闪烁,我们可以用翻转电平操作。
由于初始LED1(PB9)高电平熄灭,LED2(LED8)低电平点亮。
加入延时函数,让二者电平翻转。
while (1)
{
HAL_Delay(500);
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_8);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
四、Keil的软件仿真逻辑
4.1波形观察(设置调试)
波形图查看:
五、总结
这次作业虽然做的较为潦草,但是提高本次的HAL库学习,更加理解了嵌入式开发,HAL库会很方便和很容易,本人才疏学浅,有问题请各位积极指出,谢谢大家。
参考文献: