OpenEdv-开源电子网

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

坑人的STM32F100,Systick没法正常工作。

[复制链接]

19

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2011-8-8
在线时间
0 小时
发表于 2011-8-18 10:52:20 | 显示全部楼层 |阅读模式
STM32F100的时钟最大只能调为24M,Systick的始终来源HCLK的 1/8,有就是只有3M,我不知道Systick是不是还有可工作频率范围,反正现在读出来的时间完全不准啊。
世界上有10种人,一种是懂二进制的,另一种是不懂二进制的。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

19

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2011-8-8
在线时间
0 小时
 楼主| 发表于 2011-8-18 11:31:50 | 显示全部楼层
#include <stm32f10x.h>

 #define u8   unsigned char
 #define u16  unsigned short 
 #define u32  unsigned int

//void delay_us(u32 nus);
void delay_ms(u16 nms);
 //u8  fac_us=0;
 u8  fac_ms=0;

 void RCC_Config(void)
{
    FLASH->ACR=0x32;    //FLASH延时为2//放在什么地方最合适?
RCC->CR&=0<<24;                //失能PLLON    
RCC->CFGR|=0x00100002;        //配置PLL 选择HIS/2为PLL的输入 
   RCC->CR|=1<<24;                //使能PLLON
    while(!(RCC->CR>>25));         //等待PLL锁定
}


main()
{

RCC_Config();
RCC->APB2ENR=1<<3;
GPIOB->CRL=0x300;
    SysTick->CTRL&=0xfffffffb;      //bit2清空,选择外部时钟  HCLK/8
//fac_us=3;
fac_ms=3000;     //才三千    3000*1000=3000000<2^24
while(1)
{
       GPIOB->BRR=0x4;
   delay_ms(1000);
   GPIOB->BSRR=0x4;
   delay_ms(1000);
}
}

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;       //清空计数器        
}
世界上有10种人,一种是懂二进制的,另一种是不懂二进制的。。。
回复 支持 反对

使用道具 举报

19

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2011-8-8
在线时间
0 小时
 楼主| 发表于 2011-8-18 11:33:32 | 显示全部楼层
时钟配置函数验证过了,可以用的24M。
但是看到灯是狂闪的。。。
世界上有10种人,一种是懂二进制的,另一种是不懂二进制的。。。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2011-8-18 12:23:42 | 显示全部楼层
软件仿真看看.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

19

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2011-8-8
在线时间
0 小时
 楼主| 发表于 2011-8-18 21:01:21 | 显示全部楼层
哦,其实时间稍有偏差,还是内部RC振荡器不稳的原因。
世界上有10种人,一种是懂二进制的,另一种是不懂二进制的。。。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 20:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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