你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

cubemx配置的串口中断发送HAL_UART_Transmit_IT问题(搞定见#21)

[复制链接]
ss1969 提问时间:2016-1-24 00:24 /
阅读主题, 点击返回1楼
收藏 评论26 发布时间:2016-1-24 00:24
26个回答
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
还有其实重定向比这个好用

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版