1.前期准备
安装好 STM32CubeMX
安装好 clion
2. 创建项目
- 启动
STM32CubeMX
,选择单片机型号
- 设置系统时钟,配置为外部晶振
- 使能下载调试接口
SWD
,如下图,后续需要通过该接口下载程序至单片机
- 配置
LED0
,PB0
为LED
的IO
口,并取名为LED0
,方便后续编程使用
- 配置
LED1
,将PB1
配置为LED1
,方法与步骤 4
相同 - 生成项目工程代码
注:上图中,2
、3
分别为工程名字和存储地址,根据自己需要填写。4
比较关键,使用 Keil
开发则选择 MDK-ARM
,如果使用 clion
,选择 STM32CubeIDE
。因下载最新的固件版本需要时间,故这里取消 5
,点击 6
生成工程代码。
3. 编辑代码
打开创建的工程,找到源文件夹 Src
的 main.c
,并在 while(1)
循环中添加 2
条点亮 LED0
、LED1
代码如下。main()
函数中,其他代码均为系统生成的初始化代码,无需理会。
int main(void)
{
HAL_Init();
/* Configure the system clock */
SystemClock_Config();
/* Initialize all configured peripherals */
MX_GPIO_Init();
while (1)
{
/* USER CODE BEGIN WHILE */
//添加代码,点亮LED0,LED1
HAL_GPIO_WritePin(LED0_GPIO_Port,LED0_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_RESET);
/* USER CODE END WHILE */
}
}
4. 编译下载
将程序下载至开发板,观察 LED
灯是否点亮。
5. 闪烁 LED0 灯
更新 main
函数代码如下:
int main(void)
{
HAL_Init();
/* Configure the system clock */
SystemClock_Config();
/* Initialize all configured peripherals */
MX_GPIO_Init();
while (1)
{
/* USER CODE BEGIN WHILE */
//闪烁LED0
HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin);//切换亮、灭状态
HAL_Delay(500);//延时500ms
/* USER CODE END WHILE */
}
}
如代码所示,在 while(1)
循环中,每隔 500ms
切换一次 LED0
亮或灭的状态,实现 LED0
闪烁功能。
6. 流水灯
每隔 500ms
依次点亮 LED0
,LED1
,实现流水灯效果,代码如下:
int main(void)
{
HAL_Init();
/* Configure the system clock */
SystemClock_Config();
/* Initialize all configured peripherals */
MX_GPIO_Init();
while (1)
{
/* USER CODE BEGIN WHILE */
//流水灯
HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin);//切换亮、灭状态
HAL_Delay(500);//延时500ms
HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);//切换亮、灭状态
HAL_Delay(500);//延时500ms
/* USER CODE END WHILE */
}
}
将程序编译并下载至开发板,观察 LED
工作情况。
7. 小结
本章学习了使用 STM32CubeMx
创建工程,并实现对 LED
小灯的操作。