嵌入式开发学习实验之中断及串口通信进阶
一、STM32CubeMX中断方式点灯
1、核心板选择:
核心板选择为STM32F103C8T6
2、核心板设置:
设置PA1端接开关
PB5端接LED
3、CubeMX工程设置:
![在这里插入图片描述](https://img-blog.csdnimg.cn/0062c528f06d4497920fc5ff3b11a5db.jpeg
设置指示灯LED引脚PB5,设置引脚模式为输出模式GPIO_Output
设置按键引脚PA1,设置引脚为外部中断功能,PA1与外部中断线EXIT1连接GPIO_EXIT1
后续设置:
时钟设置:
设置完毕
生成工程文件并且打开进入下一步
4、代码编写
在Keil文件中的gpio.c文件可以找到中断服务函数:
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
捕获到上升沿时中断,进入此函数
之后执行函数:
HAL_GPIO_EXTI_Callback(GPIO_Pin)
找到需要我们自己重新编写的函数:
在main.c中选择一个位置进行编写并且编译:
编译无误进入烧录
烧录成功
5.连接线路:
LED长脚——3V3
LED短脚——PB5
PA1——3V3——亮灯
PA1——GND——熄灯
6.实验演示:
二、中断方式串口通信:
1.实验要求:
采用串口中断方式重做上周的串口通信作业,分别实现:1)当stm32接收到字符“s”时,停止持续发送“hello windows!”; 当接收到字符“t”时,持续发送“hello windows!
2.工程设置
时钟设置:
3.代码编写:
在main.c函数中找到/* USER CODE BEGIN 2*/和/* USER CODE END2 */
并且在其中填写如下函数:
然后在main.c中编写串口数据接受函数和中断函数
编译无误后进入烧录:
烧录成功
进入串口测试:
三、STM32采用串口DMA方式,用115200bps或更高速率向上位机连续发送数据。
DMA方式的接口函数:
实验要求:
STM32采用串口DMA方式,用115200bps或更高速率向上位机连续发送数据。
1、工程设置:
工程设置结束生成工程文件并且打开
2.代码编写:
首先在main.c中添加如下代码:
uint8_t Senbuff[] = "Hello world!";
此代码为:定义数据发送数组。
然后找到/*USER CODE END WHILE */
在其后添加“:
HAL_UART_Transmit_DMA(&huart1, (uint8_t *)Senbuff, sizeof(Senbuff));
HAL_Delay(1000);
编译无误即可以开始烧录
最终实验结果