OpenEdv-开源电子网

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

关于用系统时钟延时的问题

[复制链接]

7

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2012-5-1
在线时间
0 小时
发表于 2012-5-1 18:37:12 | 显示全部楼层 |阅读模式
             1.请问systick库函数的定义在哪啊,有人说是在misc中定义的,但是我在里面看了
只有这个定义void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource)
{
/* Check the parameters */
assert_param(IS_SYSTICK_CLK_SOURCE(SysTick_CLKSource));
if (SysTick_CLKSource == SysTick_CLKSource_HCLK)
{
SysTick->CTRL |= SysTick_CLKSource_HCLK;
}
else
{
SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8;
}
}其他的没有啊

2.然后我又用了直接操作寄存器的方法
void delay_ms(u16 nms)
{
u32 temp;
SysTick->LOAD=(u32)nms*fac_ms;//时间加载(SysTick->LOAD为24bit)
SysTick->VAL =0x00; //清空计数器
SysTick->CTRL=0x01 ; //开始倒数
do
{
temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16)));//等待时间到达
SysTick->CTRL=0x00; //关闭计数器
SysTick->VAL =0X00; //清空计数器
}
可是程序死在temp=SysTick->CTRL;这里,有什么解决办法吗,请大家帮帮忙啊,我在写程序的时候常会遇到程序死在某处的问题,我该怎么找到解决问题的方法啊
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-5-1 19:59:05 | 显示全部楼层
回复【楼主位】dong130300:
---------------------------------
1,库函数没有延时的函数提供吧.
2,你要先调用延时初始化函数.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2012-5-1
在线时间
0 小时
 楼主| 发表于 2012-5-1 20:52:54 | 显示全部楼层

谢谢楼主了,但是没太理解明白,那个操作寄存器延时的用的就是你的历程里面的delay_us,但是为什么程序会死在那里哪,我在网上也搜了一遍,都认为那个函数没有问题啊,为什么我用的时候就会死在

 do
 {
  temp=SysTick->CTRL;
 }
 while(temp&0x01&&!(temp&(1<<16)));

 

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-5-1 21:17:56 | 显示全部楼层
回复【3楼】dong130300:
---------------------------------
你延时多久?
软件仿真还是硬件仿真?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2012-5-1
在线时间
0 小时
 楼主| 发表于 2012-5-1 21:34:45 | 显示全部楼层
延时2us,软件仿真,就是用MDK的debug调试的,操作的是模拟I2C
回复 支持 反对

使用道具 举报

7

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2012-5-1
在线时间
0 小时
 楼主| 发表于 2012-5-1 21:36:49 | 显示全部楼层
我能把源程序给你发过去吗,我用软件模拟I2C已经好久了,但是一直没有弄出来,就用了你的程序,在基础上改了改
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-5-1 23:27:11 | 显示全部楼层
你直接用我们的代码就OK 了..
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-25 18:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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