OpenEdv-开源电子网

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

莫名其妙的错误啊,这是怎么回事

[复制链接]

39

主题

160

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
298
金钱
298
注册时间
2014-1-9
在线时间
8 小时
发表于 2014-6-21 16:28:27 | 显示全部楼层 |阅读模式
5金钱
原子哥,我用了你的开源delay.c的延迟函数,对24c02进行读写,如果在不进入系统前,初始化过程中,连续写没有问题,可是在进入UCOS系统后,连续写的话,第一个可以写进,第二个就写不进,但如果单步仿真调试的话,在系统中是可以连续写进的。另外,我用18b20也是这样,在初始化过程中,用你开源的延迟函数可以读18B20,但进入系统后,在用你的延迟函数,就不能对18B20进行读写了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

222

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2013-11-21
在线时间
0 小时
发表于 2014-6-21 16:36:45 | 显示全部楼层
delay函数里面有个选择,是否使用ucos,  看看是不是忘记改了
回复

使用道具 举报

39

主题

160

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
298
金钱
298
注册时间
2014-1-9
在线时间
8 小时
 楼主| 发表于 2014-6-21 16:48:39 | 显示全部楼层
额,需要改吗?改那?我看了看,好像都定义好了啊
回复

使用道具 举报

39

主题

160

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
298
金钱
298
注册时间
2014-1-9
在线时间
8 小时
 楼主| 发表于 2014-6-21 16:49:03 | 显示全部楼层
static u8  fac_us=0;//us???±±?????
static u16 fac_ms=0;//ms???±±?????

//??????????????
//?±????ucos???±?ò,???????á??????ucos???±??????
//SYSTICK???±?????¨??HCLK?±????1/8
//SYSCLK:?????±??
void delay_init()  
{

#ifdef OS_CRITICAL_METHOD  //????OS_CRITICAL_METHOD?¨????,???÷????ucosII??.
u32 reload;
#endif
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //?????????±??  HCLK/8
fac_us=SystemCoreClock/8000000; //???????±????1/8  
 
#ifdef OS_CRITICAL_METHOD  //????OS_CRITICAL_METHOD?¨????,???÷????ucosII??.
reload=SystemCoreClock/8000000; //???????????????? ??????K    
reload*=1000000/OS_TICKS_PER_SEC;//?ù??OS_TICKS_PER_SEC?è?¨?????±??
//reload??24???????÷,×??ó??:16777216,??72M??,????1.86s×ó??
fac_ms=1000/OS_TICKS_PER_SEC;//?ú±íucos???????±??×???????    
SysTick->CTRL|=SysTick_CTRL_TICKINT_Msk;    //????SYSTICK????
SysTick->LOAD=reload;  //??1/OS_TICKS_PER_SEC??????????
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;    //????SYSTICK    
#else
fac_ms=(u16)fac_us*1000;//·?ucos??,?ú±í????ms?è????systick?±????   
#endif
}     

#ifdef OS_CRITICAL_METHOD //??????ucos
//???±nus
//nus???????±??us??.         
void delay_us(u32 nus)
{
u32 ticks;
u32 told,tnow,tcnt=0;
u32 reload=SysTick->LOAD; //LOAD????       
ticks=nus*fac_us;  //?è??????????     
tcnt=0;
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;//?±??????/?????????????±??,?ò????.
}  
};      
}
//???±nms
//nms:?????±??ms??
void delay_ms(u16 nms)
{
if(OSRunning==OS_TRUE)//????os??????????     
{   
if(nms>=fac_ms)//???±???±???ó??ucos??×????±?????? 
{
    OSTimeDly(nms/fac_ms);//ucos???±
}
nms%=fac_ms; //ucos??????·¨?á?????????????±??,???????¨·??????±    
}
delay_us((u32)(nms*1000)); //???¨·??????±,???±ucos??·¨?????÷??.
}
#else//????ucos?±
//???±nus
//nus???????±??us??.         
void delay_us(u32 nus)
{
u32 temp;       
SysTick->LOAD=nus*fac_us; //?±??????     
SysTick->VAL=0x00;        //?????????÷
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;          //????????  
do
{
temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16)));//?????±??????   
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;       //??±??????÷
SysTick->VAL =0X00;       //?????????÷  
}
//???±nms
//×???nms??·??§
//SysTick->LOAD??24???????÷,?ù??,×??ó???±??:
//nms<=0xffffff*8*1000/SYSCLK
//SYSCLK??????Hz,nms??????ms
//??72M??????,nms<=1864 
void delay_ms(u16 nms)
{        
u32 temp;    
SysTick->LOAD=(u32)nms*fac_ms;//?±??????(SysTick->LOAD??24bit)
SysTick->VAL =0x00;           //?????????÷
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;          //????????  
do
{
temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16)));//?????±??????   
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;       //??±??????÷
SysTick->VAL =0X00;       //?????????÷        

#endif
回复

使用道具 举报

8

主题

222

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2013-11-21
在线时间
0 小时
发表于 2014-6-21 16:58:19 | 显示全部楼层
回复【4楼】巫妖:
---------------------------------
弄错了,是sys.h 里面有个宏定义
#define SYSTEM_SUPPORT_UCOS 0 定义系统是否支持ucos
回复

使用道具 举报

39

主题

160

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
298
金钱
298
注册时间
2014-1-9
在线时间
8 小时
 楼主| 发表于 2014-6-22 08:47:52 | 显示全部楼层
回复【5楼】西门吹雪:
---------------------------------
谢谢,我找找
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-7 00:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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