cubemx配置的串口中断发送HAL_UART_Transmit_IT不行

2019-07-14 15:22发布



为何HAL_UART_Transmit可发送,改成HAL_UART_Transmit_IT就不行了
cube配置的STM32f407系统
其他代码均一样

        while(HAL_OK != HAL_UART_Transmit_IT(DEFAULT_UART, (uint8_t*)UartTxBuffer, index));    //不行
        while(HAL_OK != HAL_UART_Transmit(DEFAULT_UART, (uint8_t*)UartTxBuffer, index, 0xFFFF));  //可以




----
搞定,见21楼
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
huazhe
1楼-- · 2019-07-15 16:22
 精彩回答 2  元偷偷看……
TOPCB
2楼-- · 2019-07-15 17:33
仿真一下,进入串口发送以后,周到哪一步出的错。
naiztycheng
3楼-- · 2019-07-15 18:41
深海零下一度1 发表于 2018-12-10 20:47
中断模式发送,只是在IT Handler里面设置成可以再次调用吧?
而且就算我没有在HAL_UART_TxCpltCallback里面处理后续,第一次也肯定应该发送得出去才对。。
但是第一次也必然发不出

我看错了,你说的对。你确定中断设置的对吗?
naiztycheng
4楼-- · 2019-07-16 00:35
深海零下一度1 发表于 2018-12-10 20:47
中断模式发送,只是在IT Handler里面设置成可以再次调用吧?
而且就算我没有在HAL_UART_TxCpltCallback里面处理后续,第一次也肯定应该发送得出去才对。。
但是第一次也必然发不出

我之前做过一个虚拟串口的,觉得程序写得也对,就是调不通,每次接受到的数也都正常但是发送出去被电脑串口终端接收就不成。后来发觉是串口终端的问题。但是推测你这个不是这个原因。你在调试的时候时钟卡在while那个地方吗?还是while那个地方已经过去了,但是收不到数据?
深海零下一度1
5楼-- · 2019-07-16 01:34
deco_89 发表于 2018-12-10 20:34
你只有这段代码没用啊,UartSetTxAvailable(); 是要干嘛?初始化怎么处理的?配置怎么处理的,建议还是从基础多练习几个例程吧,使用HAL库的话不管你用什么板子只要配置好了,应该都没问题的

UartSetTxAvailable 取mutex而已,后面是give mutex
初始化都是用的cubemx生成的,配置你要说有问题吧,直接block的函数发送又是正常的
说中断配置有问题吧,rx中断又是正常的,rx也是用中断收的。
深海零下一度1
6楼-- · 2019-07-16 05:05
 精彩回答 2  元偷偷看……

一周热门 更多>