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

STM32F072在跑UCOS时UART中断服务程序只进去第一次

[复制链接]
haihuang-402384 提问时间:2014-12-17 18:54 /
阅读主题, 点击返回1楼
收藏 评论29 发布时间:2014-12-17 18:54
29个回答
haihuang-402384 回答时间:2014-12-18 14:19:58
wambob 发表于 2014-12-18 14:08
中断服务程序中,前后加上OSIntEnter();OSIntExit();
如果不行,是不是中断任务切换程序出错. ...

都有加进去的
123.png
回答时间:2014-12-18 14:25:46
把printf去掉试试。你确定他走到了OSINTEXIT了吗?
wambob 回答时间:2014-12-18 14:43:36


while循环体,后面难道不用" ;  "
haihuang-402384 回答时间:2014-12-18 14:44:36
安 发表于 2014-12-18 14:25
把printf去掉试试。你确定他走到了OSINTEXIT了吗?

printf去掉也一样,确定走到OSINTEXIT了,还有虽然第一次能进中断,但是读到的数据是0,RDR寄存器值是0
osintexit.png
haihuang-402384 回答时间:2014-12-18 14:46:13
wambob 发表于 2014-12-18 14:43
while循环体,后面难道不用" ;  "

while下面有{},跟;效果一样,个人习惯,以前会把;号看漏了,所以现在都用{}
回答时间:2014-12-18 15:00:04
手头没有板子,不好帮楼主测试。把while改成if,然后读取是在if里面读取,这样处理一下,可以吗?
haihuang-402384 回答时间:2014-12-18 15:05:38
安 发表于 2014-12-18 15:00
手头没有板子,不好帮楼主测试。把while改成if,然后读取是在if里面读取,这样处理一下,可以吗? ...

恩,我在裸机下改成用if来做判断了,可以了,可是操作系统下不行,这系统是自己看教程移植的,现在可能会有问题,初次接触RTOS的菜鸟,够艰难的,各种问题
wambob 回答时间:2014-12-18 15:24:30
看你的那个变良  I 是 什么类型的,单片机的接收变量一般定义为一个数组, 你这好象是一个字吧?  
wambob 回答时间:2014-12-18 15:28:40
虽然第一次能进中断,但是读到的数据是0,RDR寄存器值是0


这是不是指虽然进入的串口中断,因为在中断里读取串口数据.而读出的0.是不是接收函数有问题
haihuang-402384 回答时间:2014-12-18 16:00:52
wambob 发表于 2014-12-18 15:28
虽然第一次能进中断,但是读到的数据是0,RDR寄存器值是0

接收函数是ST的官方库函数,跑裸机都没问题的,接收函数肯定没问题,是因为接收寄存器的值是0,所以才读到0

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版