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

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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版