OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4159|回复: 3

STM32跑UCOSII 读取18B20数据不正常

[复制链接]

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2019-7-15
在线时间
40 小时
发表于 2020-2-21 11:34:55 | 显示全部楼层 |阅读模式
1金钱
STM32跑UCOSII  读取18B20数据不正常为0,但是把delay_us中的delay_osschedlock();//阻止OS调度,防止打断us延时与delay_osschedunlock();//恢复OS调度                注释掉就可以读取数值,为什么呢
void delay_us(u32 nus)
{               
        u32 ticks;
        u32 told,tnow,tcnt=0;
        u32 reload=SysTick->LOAD;                                //LOAD的值                     
        ticks=nus*fac_us;                                                 //需要的节拍数
//        delay_osschedlock();                                        //阻止OS调度,防止打断us延时
        told=SysTick->VAL;                                        //刚进入时的计数器值
        while(1)
        {
                tnow=SysTick->VAL;       
                if(tnow!=told)
                {            
                        if(tnow<told)tcnt+=told-tnow;        //这里注意一下SYSTICK是一个递减的计数器就可以了.
                        else tcnt+=reload-tnow+told;            
                        told=tnow;
                        if(tcnt>=ticks)break;                        //时间超过/等于要延迟的时间,则退出.
                }  
        };
//        delay_osschedunlock();                                        //恢复OS调度                                                                            
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2016-8-8
在线时间
10 小时
发表于 2020-2-21 15:07:19 | 显示全部楼层
才开始看操作系统内容,初步理解是启用系统延时中间会加入ucos的调度任务,可能切到别的人物上去了。原本读取18b20的操作可能没执行。不知正确与否
回复

使用道具 举报

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2019-7-15
在线时间
40 小时
 楼主| 发表于 2020-2-21 15:28:25 | 显示全部楼层
zyx818102 发表于 2020-2-21 15:07
才开始看操作系统内容,初步理解是启用系统延时中间会加入ucos的调度任务,可能切到别的人物上去了。原本读 ...

就是为了防止这种情况的发生,所以在um级的延时里面加入了阻止OS调度的指令,但是这样才读不出来,只能读出0;反而把阻止OS调度的指令去掉后能读取出来数值。
回复

使用道具 举报

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2019-7-15
在线时间
40 小时
 楼主| 发表于 2020-2-22 09:38:04 | 显示全部楼层
有没有人能帮忙解决一下啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表