历史上的今天
今天是:2025年03月25日(星期二)
2019年03月25日 | 解决CUBEMX配置生成的UART无法进入中断的问题
2019-03-25 来源:eefocus
最近使用STM32F107在进行开发,用CUBEMX配置UART作为串口和上位机通讯,然而一直无法接收到数据,调试了一个上午,硬件检查过,包括重写RX回调函数都试过了,但就是无法正常接收数据。
之后找了一个重写回调的函数,移植程序结构,编译执行发现在执行其中的 HAL_UART_Receive_IT 这一函数后,会能接收一次中断发出的数据(也就是复位后能进入一次中断),怀疑是因为HAL的bug或者cubemx生成代码有bug!进入该函数内部,最后筛选出两条代码添加在主函数循环前,以及中断处理函数末尾,串口就能正常进入中断了。
这两句为:
__HAL_UART_ENABLE_IT(&huart4, UART_IT_ERR)
__HAL_UART_ENABLE_IT(&huart4,UART_IT_RXNE)
可以看主要只是第二参数变化,这一宏定义函数主要功能是将中断控制寄存器置参数二的位置,也就是重置了ERR和RXNE标志位
中断处理函数的参考代码:
void UART4_IRQHandler(void)
{
char aRxBuffer[1];
HAL_UART_Transmit(&huart4,"Hello,Enter Interrupt\r\n",26,0xFFFF);
HAL_UART_IRQHandler(&huart4);
/* Enable the UART Error Interrupt: (Frame error, noise error, overrun error) */
__HAL_UART_ENABLE_IT(&huart4, UART_IT_ERR);
/* Enable the UART Data Register not empty Interrupt */
__HAL_UART_ENABLE_IT(&huart4, UART_IT_RXNE);
}
史海拾趣
|
1 引言 表面安装技术(SMT)在国内PCB板组装(以下简称PCBA)行业正迅速被采用,目前,国内已引进了1万多条SMT生产线。PCBA行业中的重要加工设备均属计算机控制的自动化生产设备。如点胶机、印刷机、贴片机、插件机、AOI(自动光学检测仪)、ICT( ...… 查看全部问答> |
|
USB协议分析器用来截取usb数据,有没有用过的?这个设备是一个HID(人机接口设备)么? 这个设备通过usb线连接PC机,PC上有个客户端,可以将截获的数据显示出来 现在要开发一个应用程序,从PC上连接该设备的usb口读入数据,不知道该怎么实现,如 ...… 查看全部问答> |
|
关于pocket pc 2003环境下使用socket API(非socket类)编写通信程序的问题 各位老师、前辈大家好。小弟做win ce刚入门,有问题要请教,望诸位帮助答疑解惑。我使用microsoft vc 2005开发一个PDA(win ce4.21)即时通信的客户端,使用TCP协议。所有通信函数均使用socket的API方式,没有使用C++封装过的CSocket,CCeSocket等。大 ...… 查看全部问答> |
|
这个是把svn版本的FTK运行于RT-Thread上,采用的是mini2440分支,为了让大家能够直观的看到效果就做成QEMU虚拟机的形式,下载后在Windows上解压到一个目录运行run-rtthread-ftk.bat批处理文件就可以了,不需要真实的开发板。 内部是这样的,OS跑的 ...… 查看全部问答> |
|
测温度用DS18B20?杀鸡焉用宰牛刀,既麻烦又浪费。EXP430FR5739不是板载了NTC热敏电阻了么,何不利用?(本想用片内温度传感器,但是误差可能过大,遂放弃) 板载NTC电阻在25℃下为100K,温度升高电阻减小,温度降低电阻增大。由于不知NTC电阻具体 ...… 查看全部问答> |
|
众所周知,所有FPGA基本上都是基于SRAM结构的,其程序(固件)是通过JTAG口直接加载或从外部Flash加载到内部SRAM中运行的。由于Flash本身无法加密,因此FPGA程序加密保护是所有开发者必须面临的一个主要问题。目前,FPGA程序加密主要有两种方法:1 ...… 查看全部问答> |
|
为什么.net compact framework 开发wince或 windows phone 这类的程序,都不能继承窗体呢? 直接填加项目--window窗体-继承窗体后都出现以下错误: 文件中的类都不能进行设计,因此未能为该文件显示设计器。设计器检查出文件中有以下类: Form4 ...… 查看全部问答> |




