OpenEdv-开源电子网

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

原子哥,请教一个关于SysTick的问题

[复制链接]

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2011-10-14 18:55:49 | 显示全部楼层 |阅读模式

 SysTick->CTRL|=0xfffffffb;//设置外部时钟作为SysTick时钟

这个是把外部时钟设置为SysTick时钟,我想问一下,这里的外部时钟是指外部8M时钟还是PLL倍频后的系统时钟??

Time?And?Relative?Dimension?In?Space.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

10

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2011-10-11
在线时间
0 小时
发表于 2011-10-14 20:25:28 | 显示全部楼层
是外部的时钟源,有可能是4-16M,
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
 楼主| 发表于 2011-10-14 22:53:58 | 显示全部楼层
delay_init(72);      //延时初始化
这是原子哥例程里的,那他这里为什么设置这么大?
void delay_init(u8 SYSCLK)
{
SysTick->CTRL&=0xfffffffb;//bit2清空,选择外部时钟  HCLK/8
fac_us=SYSCLK/8;     
fac_ms=(u16)fac_us*1000;
}
按照原子哥的例程,如果设置这么大,那么fac_us就为9,
delay_ms(300);
那这里就延时9×1000×300=2700000个SysTick时钟周期了,根据设置,为外部时钟源,时钟为8M,根据SysTick为时钟源的1/8,也就是,外部时钟8个周期SysTick才反映一次,也就是说8M外部晶振能使SysTick每减一精确到us,这里设置了2700000个SysTick周期,换算一下就是2700000/1000/1000=2.7s
int main(void)
{   
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72);      //延时初始化
LED_Init();     //初始化与LED连接的硬件接口
while(1)
{
LED0=0;
LED1=1;
delay_ms(300);
LED0=1;
LED1=0;
delay_ms(300);
}  
}
根据例程1,每2.7秒灯变动一次,实际上测试灯闪动得相当快,所以按照道理来说,SysTick选择外部时钟是指内核时钟外面的时钟,也就是很系统时钟,但我有一点迷糊,所以上来发问。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-10-14 23:29:09 | 显示全部楼层
回复【楼主位】Tardis:
---------------------------------
PLL后的.严格的说,是PLL后的8分频.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
 楼主| 发表于 2011-10-15 00:03:31 | 显示全部楼层
回复【4楼】正点原子:
-------------------------------
嗯嗯,刚玩通了倍频,纠正一下参考手册上说的,SysTick->CTRL的第二位置1是选择系统时钟的8分频作为SysTick时钟。
另外想问一下,这个STM32内部Flash的寿命能刷多少次的说?话实有一点怕刷挂了,毕竟芯片只有一个,更换这种芯片需要的那个“发动机”我还没有呢(这个“发动机(风枪)”市面比较贵),想当月玩51,刷了1000次芯片挂了,想起也有一点寒。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-10-15 00:10:12 | 显示全部楼层
回复【5楼】Tardis:
---------------------------------
不小于1W次.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

10

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2011-10-11
在线时间
0 小时
发表于 2011-10-15 08:19:06 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
SysTick->CTRL的第二位置1是选择系统时钟的8分频作为SysTick时钟,这里就不明白,但手册不是这样讲的!!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-10-15 09:48:29 | 显示全部楼层
回复【7楼】kyng:
---------------------------------
哪个手册?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
 楼主| 发表于 2011-10-15 10:58:31 | 显示全部楼层
回复【7楼】kyng:
---------------------------------
STM32中文参考手册,我是实际测试得是选用系统时钟,不是外部时钟,手册上说外部时钟,手册上说错了。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
 楼主| 发表于 2011-10-15 11:05:43 | 显示全部楼层
回复【7楼】kyng:
---------------------------------
系统时钟的8分频,也就是,你倍频后的实际频率,不是外部的8m分频后的1m,例如你用PLL把外部频率倍频到72了,8分频后就是9了,也就是systick选择手册上写的“外部时钟”实际上是倍频后的系统时钟72经过8分频后得到的9作为systick时钟。哥表达能力不是很好,希望你能看懂。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

24

主题

116

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
328
金钱
328
注册时间
2011-9-6
在线时间
37 小时
发表于 2011-12-13 11:09:22 | 显示全部楼层
回复【10楼】Tardis:
---------------------------------
实际上是倍频后的系统时钟72经过8分频后得到的9作为systick时钟。你在这里的9的单位是什么?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-12-13 11:44:07 | 显示全部楼层
回复【11楼】yuanhe249:
---------------------------------
Mhz
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
 楼主| 发表于 2011-12-13 14:03:55 | 显示全部楼层
没想到,在这论坛我发的第一个帖子被挖出来了,从时间可以看到,我是国庆后开始学STM32的。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2115
金钱
2115
注册时间
2011-9-3
在线时间
121 小时
发表于 2011-12-14 16:18:22 | 显示全部楼层
跟LZ差不多,也是國慶左右開始玩STM32的。應該就是外部時鐘PLL后的頻率的8分頻就是systick的工作頻率了,如果外部8M,那systick頻率就為8*9/8=9M
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2011-2-12
在线时间
4 小时
发表于 2012-2-20 21:36:41 | 显示全部楼层
一直很愚钝。。。
delay_init(72);      //延时初始化 
这是原子哥例程里的,那他这里为什么设置这么大? 
void delay_init(u8 SYSCLK) 

SysTick->CTRL&=0xfffffffb;//bit2清空,选择外部时钟  HCLK/8 
fac_us=SYSCLK/8;      
fac_ms=(u16)fac_us*1000; 

按照原子哥的例程,如果设置这么大,那么fac_us就为9。

9MHz的sysTick频率。。算起来每个sysTick不是(1/(9*1000*1000))s = 1/9us吗?这不等于1us啊。。。
求指教。。。。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-2-20 23:10:36 | 显示全部楼层
先去了解SYSTICK的频率吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2233
金钱
2233
注册时间
2012-4-30
在线时间
7 小时
发表于 2012-5-2 13:00:28 | 显示全部楼层
我大一才学STM32的
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-5-2 13:48:38 | 显示全部楼层
大一才学...汗...
我大四才学呢...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-25 19:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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