一、下载使用stm32cubeMX,完成LED流水灯作业
1、stm32cubeMX下载(stm官网下载)
2、安装完成后进入stm32cubeMX选择新工程,选择stm32f103c8芯片
端口设置:
RCC
SYS
点击Project manager,在工具链接Toolchain选择MDK-ARM然后 点击右上角GENERATECODE创建Keil文件
3、点击中间open project 进入keil工程里,
找到main.c中的while(1)循环,其中的代码需要自行添加,
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); // 灯1亮
HAL_Delay(1000); // 延时1s
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // 灯1灭
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET); // 灯2亮
HAL_Delay(1000); // 延时1s
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET); // 灯2灭
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); // 灯3亮
HAL_Delay(1000); // 延时1s
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET); // 灯3灭
4、然后直接烧录运行
](https://img-blog.csdnimg.cn/ace05ae77ab2428ab76e8e9284cee3e3.gif)
二、利用stm32cubeMX实现外部中断控制led实验
1、cube端口
GPIO
RCC
SYS
NVIC
A1端口输出低电平,A7端口输出高电平,A4端口连接LED,PB5选取为中断控制接口
在工程管理页面勾选
2、创建生成keil工程文件
找到stm32f1xx_hal_gpio.c文件,将HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)函数添加进去
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == SWITCH_Pin)
{
GPIO_PinState pinState = HAL_GPIO_ReadPin(SWITCH_GPIO_Port,SWITCH_Pin);
if(pinState==GPIO_PIN_RESET)
HAL_GPIO_WritePin(LED_A4_GPIO_Port,LED_A4_Pin,GPIO_PIN_RESET);
else
HAL_GPIO_WritePin(LED_A4_GPIO_Port,LED_A4_Pin,GPIO_PIN_SET);
}
}
直接添加会有报错说明:未定义的变量名,这是因为在cube端口设置中对A4端口和PB5端口设置了别名,解决方法如下:
在main.c文件目录下找到main.h 文件,找到其中的宏定义
#define LED_A4_Pin GPIO_PIN_4
#define LED_A4_GPIO_Port GPIOA
#define SWITCH_Pin GPIO_PIN_5
#define SWITCH_GPIO_Port GPIOB
#define SWITCH_EXTI_IRQn EXTI9_5_IRQn
将其复制粘贴到stm32f1xx_hal_gpio.c文件的main函数之前
再删掉重复定义的代码段即可。
3、生成hex文件,烧录并运行