文章目录
一、 HAL库中断方式进行串口通信
1、通过CubeMX配置项目
1、设置RCC
2、设置SYS
3、设置USART
4、设置NVIC
5、创建项目
2、在keil上配置代码
1、打开在CubeMX上配置的项目
2、在main函数前定义全局变量
3、在main函数中设置接收中断
4、在main函数中的while循环里添加传输代码
5、在main函数下重写中断处理函数
6、main函数的全部代码
7、编译并烧录
3、效果
二、STM32外部中断方式控制灯的亮灭
1、通过STMCube配置项目
1、引脚配置:
A4输出控制灯的亮灭,设置为GPIO_OUTPUT
A1持续输出高电平,设置为GPIO_OUTPUT
A7持续输出低电平,设置为GPIO_OUTPUT
B5为模拟开关,设置为GPIO_EXIT5**(外部中断模式)**
2、配置EXIT
3、配置SYS
4、配置GPIO
5、代码创建勾出这个
6、创建项目
2、通过KEIL配置代码
1、打开生成的项目,找到stm32f1xx_it.c
2、找到EXTI9_5_IRQHandler函数,选中HAL_GPIO_EXIT_IRQHandler这个语句按F12跳到该函数
3、往下找到HAL_GPIO_EXTI_Callback这个函数
该函数是用户自己重写,可以在这里根据不同的中断处理不同的处理。在这里需要根据不同中断实现A4的亮灭
4、编译生成hex
5、通过FlyMCU进行烧录
3、结果
实验现象
三、CubeMX配置串口DMA数据传输
1、设置RCC
2、设置串口
3、DMA设置
4、时钟源设置
5、项目文件设置
6、创建工程
7、配置下载工具
8、测试历程:
添加数组发送数组
/* USER CODE BEGIN Init */
uint8_t Senbuff[] = "\r\n**** Serial Output Message by DMA ***\r\n UART DMA Test \r\n Zxiaoxuan"; //定义数据发送数组
/* USER CODE END Init */
定义while循环
while (1)
{
/* USER CODE END WHILE */
HAL_UART_Transmit_DMA(&huart1, (uint8_t *)Senbuff, sizeof(Senbuff));
HAL_Delay(1000);
/* USER CODE BEGIN 3 */
}
程序烧录
串口调试结果