本帖最后由 liqingxin0092 于 2025-3-23 15:07 编辑
各位大佬,我用的stm32h750,我想直观地 看下串口硬件接收fifo的效果.
设计了一个小实验:
串口初始化完成延迟6s,在这6s内用串口助手给单片机发16个u8类型的数.(0~0xf)
我本以为6s一到,我keil5 debug会在a数组里看到,我串口助手发送的16个数.
结果却一点不一样, 如果延时是6s的话,接收到8,9,10,11,12,13,14,15,15,15,15,15...
如果延时时间再长一点,12s,接收到16个15.
我就感觉硬件串口fifo里面的数据再随时间流逝,被读走了, 但是我的软件并没有在读,被我那个for循环以外的力量给读走了,实际上我只有那一个for循环在读
后来我串口初始化完,直接关中断(rx中断没有开,中断函数也没实现),后面来个while(1);
我发数据,一直发直到置了rx fifo满标志位, 后来奇怪的来了,rx fifo满这个标志位自己消失了.....我明明没有读它呀,软件里都没有碰RDR寄存器...就while(1),也没中断.
我发数据直到满,满标志位自己又清了....
谁能帮帮孩子呀  ,难道我不能通过硬件串口fifo 读到 1分钟前 串口接收到的数据吗....
|