一、stm32CubeMX工程设置
1.打开stm32Cube软件,建立工程
2.配置RCC
如图:
3.配置时钟树
如图,在蓝框处设置成72,然后按回车。
4.设置SYS如图:
5.设置引脚及参数
将A6设置为GPIO_OUTPUT;B12设置为GPIO_EXTIO.
然后设置B12如图
6.设置NVIC
如图将灰色处勾选并设置成15.
6.Project与Code Generator配置
红框处从上往下依次是文件名,文件路径,编辑工具和stm包。
Code Generator进行如下配置
然后点击GENERATE CODE生成文件,并打开工程。
二、编译程序控制小灯。
1.这里有个弱函数的概念,__weak意为弱函数。其意义是,当我们重写一个相同的函数时,则会调取新函数。
编写此函数代码如下:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
GPIO_PinState b0 = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_12);
switch (GPIO_Pin){
case GPIO_PIN_12:
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, b0);
break;
}
}
放入main.c文件的如图位置BEGIN4与END4之间:
实验结果如下:
三、中断控制串口通信
1.设置参数,放在include代码的后面行。
uint8_t a[1];
uint8_t b[]="hello\n";
2.启动中断,放在主函数while函数前。
HAL_UART_Receive_IT(&huart1,(uint8_t *)&a,1);
3.重写回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
HAL_UART_Receive_DMA(&huart1,(uint8_t *)b,sizeof(b));
HAL_UART_Transmit_DMA(&huart1,(uint8_t *)b,sizeof(b));
}
4.烧录程序并查看结果。
如图:
总结
中断控制能解放CPU,还是很好用的。stm32的中断控制感觉上要比C51要难很多。总的来说中断控制是个很重要的内容,所以还是要加强掌握。
参考链接:
https://blog.csdn.net/weixin_46628481/article/details/121056373
https://blog.csdn.net/qq_60678931/article/details/121051054
https://blog.csdn.net/qq_45396672/article/details/113926212