历史上的今天

今天是:2024年11月12日(星期二)

2021年11月12日 | stm32时钟及其滴答定时器

发布者:BlossomWhisper 来源: eefocus关键字:stm32  时钟  滴答定时器 手机看文章 扫描二维码
随时随地手机看文章

stm32时钟设置(F1其余型号同理):

Reset handler

Reset_Handler   PROC

                EXPORT  Reset_Handler             [WEAK]

                IMPORT  __main

                IMPORT  SystemInit

                LDR     R0, =SystemInit

                BLX     R0               

                LDR     R0, =__main

                BX      R0

                ENDP


void SystemInit (void)


{..............................


/* 打开 HSION 位 */

  RCC->CR |= (uint32_t)0x00000001;


........................


/* 配置系统时钟频率, HCLK, PCLK2 and PCLK1   */

  /* 配置Flash延迟周期并启用预取buffer*/


 SetSysClock();//


}


1.当HSI被用于作为PLL时钟的输入时,系统时钟能得到的最大频率是64MHz。

2。AHB和APB2域的最大频率是72MHz。APB1域的最大允许频率是36MHz。SDIO接口的时钟频率固定为HCLK/2。

RCC通过AHB时钟(HCLK)8分频后作为Cortex系统定时器(SysTick)的外部时钟(stm32f1)。通过对SysTick

控制与状态寄存器的设置,可选择上述时钟或Cortex(HCLK)时钟作为SysTick时钟。ADC时钟由高速APB2时钟经2、4、6或8分频后获得。


HSI时钟信号由内部8MHz的RC振荡器产生,可直接作为系统时钟或在2分频后作为PLL输入。

HSI RC振荡器能够在不需要任何外部器件的条件下提供系统时钟。它的启动时间比HSE晶体振荡器短

PLL:内部PLL可以用来倍频HSI RC的输出时钟或HSE晶体输出时钟。

LSE:是一个32.768kHz的低速外部晶体或陶瓷谐振器。它为实时时钟或者其他定时功能提供一个低功耗且精确的时钟源。


LSE晶体通过在备份域控制寄存器(RCC_BDCR)里的LSEON位启动和关闭。


在备份域控制寄存器(RCC_BDCR)里的LSERDY指示LSE晶体振荡是否稳定。


RTC时钟

通过设置备份域控制寄存器(RCC_BDCR)里的RTCSEL[1:0]位,RTCCLK时钟源可以由HSE/128、LSE或LSI时钟提供。除非备份域复位,此选择不能被改变。

 

SYSTICK 寄存器结构,SysTick_TypeDeff,在文件“stm32f10x_map.h”中定义如下:

typedef struct

{

vu32 CTRL;

vu32 LOAD;

vu32 VAL;

vuc32 CALIB;

} SysTick_TypeDef;

 

寄存器 描述

CTRL SysTick 控制和状态寄存器

LOAD SysTick 重装载值寄存器

VAL SysTick 当前值寄存器

CALIB SysTick 校准值寄存器

 


滴答定时器(作精准延时用)

uint32_t SystemCoreClock         = SYSCLK_FREQ_72MHz;

SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);    //选择外部时钟  HCLK/8 ;                                 fac_us=SystemCoreClock/8000000;  //RCC八分频

 


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;                           //清空计数器    

}     ;

 

 

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;        //清空计数器       


关键字:stm32  时钟  滴答定时器 引用地址:stm32时钟及其滴答定时器

上一篇:STM32之ADC应用(基于F1库函数)
下一篇:TIMER之pwm应用

推荐阅读

        麒麟980的发布,让世人看到华为在芯片方面的造诣已经达到了世界领先水平,毕竟麒麟98作为世界首款商用7nm制程工艺的SoC,已经有资格和高通的骁龙旗舰处理器平起平坐。麒麟980刚上市不久,最近又有消息传出了下一代麒麟旗舰处理器麒麟990的消息。麒麟海思处理器  据国内媒体援引产业链的说法称,麒麟990的准备工作早就开始了,目前华为正...
刚入门AVR单片机一段时间,感觉资料很少,所以进度很慢,刚才百度到这里来,现上传一个数码管的程序来和大家分享,高手就跳过吧,初学可以下载来做参考proteus仿真原理图:单片机源程序:/** smg8_avr.h** Created: 2017/3/16 1:54:20* Author: lyl*/ #ifndef SMG8_AVR_H_ #define SMG8_AVR_H_ #include "lyl_avr.h"//数码管端口定义#define smgPORT...
  第22届高交会11日在深圳开幕。   的汽车、能做棉花糖的机器人、更加智慧的城市……11月11日,第二十二届中国国际高新技术成果交易会(以下简称高交会)在深圳会展中心开幕,3300多家海内外展商带来了近万个“黑科技”项目参展。   记者在现场发现,以人工智能、、为代表的新科技、新装备成为高交会的“明星”。这些凝聚着智慧和创新元素的高科...
电机是目前世界上最大的电力消耗者,并且占比非常大。荷兰能源研究中心(ECN)估计,全球发电量的45%是由电机消耗的。因此,为了推动效率的提高,各国正通过立法手段来提高电机的效率标准。2021年7月,欧盟开始实施“电机和变速驱动装置条例(EU) 2019/1781”,对之前被排除在标准之外的一些电机增加了最低效率限值,并缩短了为其他类型电机符合效率要求...

史海拾趣

问答坊 | AI 解惑

发本AVR的书

我也是在网上下载的…

查看全部问答∨

电子设计大赛题目 简易液体加注装置

本帖最后由 paulhyde 于 2014-9-15 09:08 编辑 课程设计 问了老师, 说了等于没说, 哪位达人知道怎么做教教!!!! E-mail: zhangtao_zt21@yahoo.com.cn 万分感谢 [ 本帖最后由 open82977352 于 2010-2-2 10:49 编辑 ]  …

查看全部问答∨

求Razavi经典著作Design of analog IC

求这本书,谁有的希望传上来看看…

查看全部问答∨

【藏书阁】模拟电子技术多媒体课件 PPS

[ 本帖最后由 wzt 于 2010-2-26 19:18 编辑 ]…

查看全部问答∨

麻烦各位帮我看一看我的程序哪里有问题,拜托了,我是新手阿

#include <reg51.h> #define TIMER0H 0xD8 #define TIMER0L 0XF0 #define  uchar unsigned char #define  ON   0 #define  OFF  1 TableLED[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D, ...…

查看全部问答∨

怪现象,我通过IOCTL循环查询I/O状态,状态是正确的,但一进中断再读取I/O状态,却发现I/O状态被改变了,中断里没去改变I/O的状态。

怪现象,我通过IOCTL循环查询I/O状态,状态是正确的,但一进中断再读取I/O状态,却发现I/O状态被改变了,中断里没去改变I/O的状态。…

查看全部问答∨

STM32USBLIB里面的一点细节求证!!

/******************************************************************************* * Macro Name : SetEPDblBuffCount / SetEPDblBuf0Count / SetEPDblBuf1Count. * Description : Gets buffer 0/1 address of a double buffer endpoint. ...…

查看全部问答∨

紧急求助。。。。flash被锁。。。。

把8962程序烧到9b92中了,然后就被催了,。。。重新烧9b92的烧不进去了。。。求解。。。。…

查看全部问答∨

开关电源拓扑结构概述 资料

主回路——开关电源中,功率电流流经的通路。主回路一般包含了开关电源中的开关器件、储能器件、脉冲变压器、滤波器、输出整流器、等所有功率器件,以及供电输入端和负载端。   开关电源(直流变换器)的类型很多,在研究开发或者维修电源系统时 ...…

查看全部问答∨

便携器件的ESD保护

  很显然,设计一个可靠的系统,需要一些ESD保护。虽然有几种瞬态保护装置可供选择,但选择时仍应十分谨慎。如果器件选择不当,就不能发挥作用,而且还会干扰电路的正常工作。为了抑制便携系统的瞬态过程,保护装置必须具有以下特性:   1 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved