wambob 发表于 2014-12-18 14:08
中断服务程序中,前后加上OSIntEnter();OSIntExit();
如果不行,是不是中断任务切换程序出错. ...
都有加进去的
把printf去掉试试。你确定他走到了OSINTEXIT了吗?
haihuang-402384 发表于 2014-12-18 14:19
都有加进去的
while循环体,后面难道不用" ;"
安 发表于 2014-12-18 14:25
把printf去掉试试。你确定他走到了OSINTEXIT了吗?
printf去掉也一样,确定走到OSINTEXIT了,还有虽然第一次能进中断,但是读到的数据是0,RDR寄存器值是0
wambob 发表于 2014-12-18 14:43
while循环体,后面难道不用" ;"
while下面有{},跟;效果一样,个人习惯,以前会把;号看漏了,所以现在都用{}
手头没有板子,不好帮楼主测试。把while改成if,然后读取是在if里面读取,这样处理一下,可以吗?
安 发表于 2014-12-18 15:00
手头没有板子,不好帮楼主测试。把while改成if,然后读取是在if里面读取,这样处理一下,可以吗? ...
恩,我在裸机下改成用if来做判断了,可以了,可是操作系统下不行,这系统是自己看教程移植的,现在可能会有问题,初次接触RTOS的菜鸟,够艰难的,各种问题
看你的那个变良I 是 什么类型的,单片机的接收变量一般定义为一个数组, 你这好象是一个字吧?
虽然第一次能进中断,但是读到的数据是0,RDR寄存器值是0
这是不是指虽然进入的串口中断,因为在中断里读取串口数据.而读出的0.是不是接收函数有问题
wambob 发表于 2014-12-18 15:28
虽然第一次能进中断,但是读到的数据是0,RDR寄存器值是0
接收函数是ST的官方库函数,跑裸机都没问题的,接收函数肯定没问题,是因为接收寄存器的值是0,所以才读到0