watershade 发表于 2016-1-25 22:21:07

ss1969 发表于 2016-1-25 10:11
中断模式发送,只是在IT Handler里面设置成可以再次调用吧?
而且就算我没有在HAL_UART_TxCpltCallback里 ...

我看错了,你说的对。你确定中断设置的对吗?

watershade 发表于 2016-1-25 22:26:28

ss1969 发表于 2016-1-25 10:11
中断模式发送,只是在IT Handler里面设置成可以再次调用吧?
而且就算我没有在HAL_UART_TxCpltCallback里 ...

我之前做过一个虚拟串口的,觉得程序写得也对,就是调不通,每次接受到的数也都正常但是发送出去被电脑串口终端接收就不成。后来发觉是串口终端的问题。但是推测你这个不是这个原因。你在调试的时候时钟卡在while那个地方吗?还是while那个地方已经过去了,但是收不到数据?

ss1969 发表于 2016-1-25 23:32:22

回到未来~ 发表于 2016-1-25 10:11
你只有这段代码没用啊,UartSetTxAvailable(); 是要干嘛?初始化怎么处理的?配置怎么处理的,建议还是从 ...

UartSetTxAvailable 取mutex而已,后面是give mutex
初始化都是用的cubemx生成的,配置你要说有问题吧,直接block的函数发送又是正常的
说中断配置有问题吧,rx中断又是正常的,rx也是用中断收的。

ss1969 发表于 2016-1-25 23:33:52

xmshao 发表于 2016-1-25 10:45
楼主 其实那两个函数并不一样。

上面各位的建议都非常 好,看看注释,借助例程自己捣鼓几下就知道差别了。 ...

我已经读过函数的说明了,例程没有找到完全可用的,都只是代码片段
而且似乎都是直接用_IT函数发送就成功了,没人提到不行

再次强调,我rx中断方式ok,tx 非中断也ok!

ss1969 发表于 2016-1-25 23:36:26

安 发表于 2016-1-25 11:06
仿真一下,进入串口发送以后,周到哪一步出的错。

手里只有stlink可以仿真吗?

顺便请教这个函数是否是 先填好内容,最后到
    /* Enable the UART Transmit data register empty Interrupt */
    __HAL_UART_ENABLE_IT(huart, UART_IT_TXE);

这里启动发送过程?

ss1969 发表于 2016-1-25 23:38:45

watershade 发表于 2016-1-25 22:26
我之前做过一个虚拟串口的,觉得程序写得也对,就是调不通,每次接受到的数也都正常但是发送出去被电脑串 ...

中断就是CubeMX直接配置的。。都是默认设定,你要说配错了吧。。RX又是中断方式正常使用。
调试没发现卡在什么地方。。

不过CubeMX 最新版问题是不少,4.12发现eth部分PHY_MICR_INT_OE这个值会生成错误,本来是1写成了2

发表于 2016-1-26 08:56:27

直接调用HAL_UART_Transmit_IT进入发送中断

watershade 发表于 2016-1-26 09:31:43

ss1969 发表于 2016-1-25 23:38
中断就是CubeMX直接配置的。。都是默认设定,你要说配错了吧。。RX又是中断方式正常使用。
调试没发现卡 ...

我用401做一个实验一下

mr.hs 发表于 2016-1-26 15:38:57

hal把一切都写好了
在cube里配置好usart 和usart中断
然后调用hal_usart_transmit_it
ok

中断中已经有了处理   不用你加

mr.hs 发表于 2016-1-26 15:43:22

还有其实重定向比这个好用
页: 1 [2] 3
查看完整版本: cubemx配置的串口中断发送HAL_UART_Transmit_IT问题(搞定见#21)