haihuang-402384 发表于 2014-12-18 14:19:58

wambob 发表于 2014-12-18 14:08
中断服务程序中,前后加上OSIntEnter();OSIntExit();
如果不行,是不是中断任务切换程序出错. ...

都有加进去的

发表于 2014-12-18 14:25:46

把printf去掉试试。你确定他走到了OSINTEXIT了吗?

wambob 发表于 2014-12-18 14:43:36

haihuang-402384 发表于 2014-12-18 14:19
都有加进去的

while循环体,后面难道不用" ;"

haihuang-402384 发表于 2014-12-18 14:44:36

安 发表于 2014-12-18 14:25
把printf去掉试试。你确定他走到了OSINTEXIT了吗?

printf去掉也一样,确定走到OSINTEXIT了,还有虽然第一次能进中断,但是读到的数据是0,RDR寄存器值是0

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
页: 1 [2] 3
查看完整版本: STM32F072在跑UCOS时UART中断服务程序只进去第一次