OpenEdv-开源电子网

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

老师请教个问题。关于OSSchedLock();

[复制链接]

1

主题

4

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2019-12-3
在线时间
1 小时
发表于 2019-12-3 22:44:59 | 显示全部楼层 |阅读模式
4金钱
老师,冒昧的打扰您一下,还望您百忙之中,给予回复

故障     .\OBJ\ClassOne.axf: Error: L6218E: Undefined symbol OSSchedUnLock (referred from sys.o).

情况:鄙人购买开发板为STM32F407VG...
        先没有按照老师的教程,我自己通过中文手册,映射地址,操作寄存器,点亮了两个灯,但是看到延时函数时,始终不懂这个
void delay_osschedlock(void)
{
  #ifdef  CPU_CFG_CRITICAL_METHOD //ʹÓÃUCOS III
   OS_ERR err;
   OSSchedLock(&err);   
  #else
   OSSchedLock();
  #endif
}
这其中
OSSchedUnLock();
来自于何处,是在哪一个文件里面有定义?


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

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6653
金钱
6653
注册时间
2015-8-25
在线时间
1034 小时
发表于 2019-12-4 13:29:52 | 显示全部楼层
这是移植ucos操作系统的时候才用到的调度器上锁函数,你跑裸机程序用不上
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2019-12-3
在线时间
1 小时
 楼主| 发表于 2019-12-4 21:51:07 | 显示全部楼层
szczyb1314 发表于 2019-12-4 13:29
这是移植ucos操作系统的时候才用到的调度器上锁函数,你跑裸机程序用不上

但老师给的代码上,;例如:delay_us()函数,有涉及到。我不定义他,就要报错。,请教瞎,不知如何如何规避呢。
附代码:
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; //&Otilde;&acirc;&Agrave;&iuml;×&cent;&Ograve;&acirc;&Ograve;&raquo;&Iuml;&Acirc;SYSTICK&Ecirc;&Ccedil;&Ograve;&raquo;&cedil;&ouml;&micro;&Yacute;&frac14;&otilde;&micro;&Auml;&frac14;&AElig;&Ecirc;&yacute;&AElig;÷&frac34;&Iacute;&iquest;&Eacute;&Ograve;&Ocirc;&Aacute;&Euml;.
   else tcnt+=reload-tnow+told;     
   told=tnow;
   if(tcnt>=ticks)break;   //&Ecirc;±&frac14;&auml;&sup3;&not;&sup1;&yacute;/&micro;&Egrave;&Oacute;&Uacute;&Ograve;&ordf;&Ntilde;&Oacute;&sup3;&Ugrave;&micro;&Auml;&Ecirc;±&frac14;&auml;,&Ocirc;ò&Iacute;&Euml;&sup3;&ouml;.
  }  
};
delay_osschedunlock();     //&raquo;&Ouml;&cedil;&acute;OS&micro;÷&para;&Egrave;               
}  

回复

使用道具 举报

6

主题

1127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1656
金钱
1656
注册时间
2019-8-15
在线时间
102 小时
发表于 2019-12-5 10:38:05 | 显示全部楼层
帮顶                                          
成功没有捷径
回复

使用道具 举报

54

主题

1008

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2384
金钱
2384
注册时间
2012-11-22
在线时间
403 小时
发表于 2019-12-5 15:28:10 | 显示全部楼层
XiXeo 发表于 2019-12-4 21:51
但老师给的代码上,;例如:delay_us()函数,有涉及到。我不定义他,就要报错。,请教瞎,不知如何如何 ...

不用操作系统,这两个函数直接删除就好了,原子的代码理论上有宏控制使能的。
态度决定一切
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2019-12-3
在线时间
1 小时
 楼主| 发表于 2019-12-5 22:05:20 | 显示全部楼层

非常感谢你的帮顶
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2019-12-3
在线时间
1 小时
 楼主| 发表于 2019-12-5 22:09:05 | 显示全部楼层
冰封嗜魔 发表于 2019-12-5 15:28
不用操作系统,这两个函数直接删除就好了,原子的代码理论上有宏控制使能的。

那麻烦再请教个问题啊。
如果我删除了红色部分:
void delay_osschedlock(void)
{
  #ifdef  CPU_CFG_CRITICAL_METHOD //&Ecirc;&sup1;&Oacute;&Atilde;UCOS III
   OS_ERR err;
   OSSchedLock(&err);    
  #else
   OSSchedLock();
  #endif
}


那函数void delay_osschedlock(void)
{
  
}

是不是就可以不要了,因为他已经没有意义了。




附:谢谢老哥的帮助!!!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-15 01:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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