OpenEdv-开源电子网

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

GD32F1系列Systick时钟配置

[复制链接]

77

主题

203

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1208
金钱
1208
注册时间
2017-8-25
在线时间
167 小时
发表于 2021-1-10 22:22:32 | 显示全部楼层 |阅读模式
2金钱
哪位大神知道怎么配置滴答定时器,我现在配置好了1ms,但是测试过程中延时差距很大。后来发现程序先初始化了Systick时钟,再初始化了系统时钟。不知道是不是这个原因导致的

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

使用道具 举报

13

主题

109

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1253
金钱
1253
注册时间
2015-9-26
在线时间
359 小时
发表于 2021-1-11 10:37:35 | 显示全部楼层
先把delay函数 发出来 看吧
回复

使用道具 举报

77

主题

203

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1208
金钱
1208
注册时间
2017-8-25
在线时间
167 小时
 楼主| 发表于 2021-1-11 15:09:01 | 显示全部楼层
xqn2012 发表于 2021-1-11 10:37
先把delay函数 发出来 看吧

void delay_init(void)
{
        u32 reload;
        SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);//Ñ¡ÔñÍⲿʱÖÓ  HCLK
        fac_us=SystemCoreClock/1000000;                                //²»ÂÛÊÇ·ñʹÓÃOS,fac_us¶¼ÐèҪʹÓÃ
        reload=SystemCoreClock/1000000;                                //ÿÃëÖӵļÆÊý´ÎÊý µ¥Î»ÎªM  
        reload*=1000000/1000;                        //¸ù¾ÝconfigTICK_RATE_HZÉ趨Òç³öʱ¼ä
                                                                                                //reloadΪ24λ¼Ä´æÆ÷,×î´óÖµ:16777216,ÔÚ72MÏÂ,Ô¼ºÏ0.233s×óÓÒ       
        fac_ms=1000/1000;                                //´ú±íOS¿ÉÒÔÑÓʱµÄ×îÉÙµ¥Î»          

        SysTick->CTRL|=SysTick_CTRL_TICKINT_Msk;           //¿ªÆôSYSTICKÖжÏ
        SysTick->LOAD=reload;                                                 //ÿ1/configTICK_RATE_HZÃëÖжÏÒ»´Î       
        SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;           //¿ªÆôSYSTICK   
}               

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)));                //&#181;&#200;&#180;&#253;&#202;±&#188;&#228;&#181;&#189;&#180;&#239;   
        SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;        //&#185;&#216;±&#213;&#188;&#198;&#202;&#253;&#198;÷
        SysTick->VAL =0X00;                                               //&#199;&#229;&#191;&#213;&#188;&#198;&#202;&#253;&#198;÷         
}


void delay_ms(u32 nms)
{
        u32 temp;                  
        SysTick->LOAD=(u32)nms*fac_ms;                                //&#202;±&#188;&#228;&#188;&#211;&#212;&#216;(SysTick->LOAD&#206;&#170;24bit)
        SysTick->VAL =0x00;                                                        //&#199;&#229;&#191;&#213;&#188;&#198;&#202;&#253;&#198;÷
        SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;        //&#191;&#170;&#202;&#188;&#181;&#185;&#202;&#253;  
        do
        {
                temp=SysTick->CTRL;
        }while((temp&0x01)&&!(temp&(1<<16)));                //&#181;&#200;&#180;&#253;&#202;±&#188;&#228;&#181;&#189;&#180;&#239;   
        SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;        //&#185;&#216;±&#213;&#188;&#198;&#202;&#253;&#198;÷
        SysTick->VAL =0X00;                                               //&#199;&#229;&#191;&#213;&#188;&#198;&#202;&#253;&#198;÷                         
}
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2020-6-7
在线时间
3 小时
发表于 2021-1-31 09:47:56 | 显示全部楼层
它的主频不一样
回复

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2019-8-22
在线时间
8 小时
发表于 2021-5-5 00:23:07 | 显示全部楼层
逍遥1 发表于 2021-1-11 15:09
void delay_init(void)
{
        u32 reload;

请问一下解决了吗,我也碰到这个问题
回复

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2019-8-22
在线时间
8 小时
发表于 2021-5-5 14:59:00 | 显示全部楼层
求问楼主解决了这个问题吗 是STM32转GD32吗
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-24 14:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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