一.简单了解
串口模式实现有三种
1.普通模式:在主函数中接收函数
2.中断模式:产生的不影响主程序运行
3. DMA模式:与主函数互不影响,独立运行
本文记录第二种普通模式。
学习目标是:实现中断串口的数据收发,发送数据时LED灯电平翻转。
二.步骤
在上一篇文章基础上,传送门:STM32HAL库普通模式串口收发
需在STM32CUBEMX软件中USART1的NVIC SETTING中使能中断,然后再次生成代码。
【小tips:如果在用户区域块编写代码的话不会被覆盖】
1-宏定义串口中断
#define UART1_IRQ
uint8_t TdataIRQ[]={"welcome to uart irq!rn"};//测试数组
uint8_t Rdata;//存放接收数据
2-同样是在stm32l4xx_hal_uart.c中1611行找到函数
HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
3-在main函数中添加如下代码
#ifdef UART1_IRQ
HAL_UART_Receive_IT(&huart1,&Rdata,1);//触发中断接收
HAL_UART_Transmit_IT(&huart1,TdataIRQ,sizeof(TdataIRQ));//发送我们使用的IRQ TEST
#endif
while(1)
{
#ifdef UART1_IRQ
HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
printf("welcome to uart1 IRQ test!rn");
HAL_Delay(2000);
#endif
}
4-修改回调函数
//回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
#ifdef UART1_IRQ
//把接收到的数据发送回屏幕,发送函数要在接收函数前面
HAL_UART_Transmit(&huart1,&Rdata,1,0xff);
HAL_UART_Receive_IT(&huart1,&Rdata,1);
#endif
}
三.总结
1.在串口可以发现,使用串口中断实现数据的收发,是不影响while中的循环的,不影响主程序运行。
2.如果是在普通模式下使用串口,添加延时函数HAL_Delay(2000),会导致程序反应不过来。
上一篇:STM32HAL库DMA模式串口收发
下一篇:STM32HAL库普通模式串口收发
推荐阅读最新更新时间:2024-11-12 10:17
推荐帖子
- 写了INF,但是安装失败,帮忙看一下
- 我的INF是为Realtek8139网卡写的我在设备管理器中,用更新驱动的方式想把驱动加载上网卡,但是每次都提示“向导无法为您的硬件找到比您现在已经安装的软件更匹配的软件”,请问这是什么原因啊?我的INF是用DDK下的GenINF的WIZARD写了一个框架,没有添加其他东西,然后用chkinf检查了一下,没有错误,但是有下面的警告Warnings:Line0:(W22.1.2212)NoCopyrightinformationfound.Line15:(W22.1.
- wlm99111 嵌入式系统
- 1611产生不规则波形
- 1611产生不规则波形的频率最大能达到多少啊,有没有范例可以借鉴,谢谢啊1611产生不规则波形啥叫不规则波形?就像线性调频信号,150KHZ的能产生吗?
- wangfei890912 微控制器 MCU
- 地址编址的问题
- 我在FPGA中建了个FIFO,16位输出数据,片选了ARM的nRCS2,EBI总线连接到FPGA中FIFO的16位输出端,请问物理地址0x10000000中的数据是否就是FIFO中的首个的数据呢?这两个芯片中的地址是怎么对应的呢?地址编址的问题
- kuandeng 嵌入式系统
- 如何检测西门子gprs模块收到数据?
- 用西门子的gprs手机模块实现tcp连接时,用什么方式知道已经收到数据,可以读出来了?谢谢如何检测西门子gprs模块收到数据?PING下固定IP?一般TCP建链成功,会返回信息的。
- dg00010170 嵌入式系统
- Freescale 基于IMX536处理器的Dialog DA9053电源管理参考设计
- Freescale基于IMX536处理器的DialogDA9053电源管理参考设计----------墨翟科技(上海)有限公司编撰在2012年飞思卡尔技术论坛中国站的展示区,Dialog公司推出并展示了一款用于飞思卡尔i.MX53处理器的电源原始设计电路。该公司型号为DA9053的单芯片系统电源管理芯片(PMIC)处于飞思卡尔i.MX53双核/四核应用处理器的电源管理原始设计电路的核心位置,可满足基于飞思卡尔多核i.MX53系列应用处理器的平板
- modichina 单片机
- ADI公司的精密电容测量方案分享
- 方案主题:ADI公司精密电容测量方案设计背景:在产品设计中,需要动态采集微弱电容值(pF级别)并将容值反馈给单片机进行对应的信号判断及逻辑控制。方案选型:AD7747设计方案一:基于ADI公司的AD7747进行微弱电容值测量AD7747基本介绍:1.AD7747是一款24位电容数字转换器(CDC)。可以测量接地式容性传感器的电容,即传感器直接连接至AD7747输入引脚。2.测量精度:10fF3.测量线性度:0.01%4.共模式电容值测量最高:17pF
- beyond_笑谈 ADI · 世健工业技术
设计资源 培训 开发板 精华推荐
- LTC1645 双通道热插拔控制器 / 电源排序器允许插入带电背板
- LTC4227-2 演示板,具有故障后自动重试功能的双路理想二极管 / 单路热插拔控制器
- 使用 PAM8124 15W D 类音频功率放大器进行单端 (SE) 配置的典型应用电路
- 洞洞板(无限大)
- LT6656AIS6-1.25、1.25V ADC 电压基准和桥式励磁电源的典型应用
- 使用 Lattice Semiconductor 的 MIPI CSI-2 Controller Core 的参考设计
- RD-500,将 FAN5234 同步降压控制器用于辅助电源应用的参考设计
- 呆萌充电助手
- 小乌龟挂件
- AD8602DRMZ-REEL放大器光电二极管电路典型应用