历史上的今天
返回首页

历史上的今天

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

正在发生

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

2021-11-12 来源:eefocus

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


推荐阅读

史海拾趣

Cystech公司的发展小趣事

为了进一步拓展全球市场,C-TECH Co., Ltd在2009年相继成立了香港分公司和中国(深圳)分公司。通过这两家分公司,公司能够更好地了解当地市场需求,提供更加贴近客户的服务。同时,公司还积极参加国际电子展会,与国际同行交流合作,不断提升自身的品牌影响力和市场竞争力。在国际化战略的推动下,C-TECH Co., Ltd的海外市场不断拓展,为公司的发展注入了新的动力。

Geo Semiconductor Inc公司的发展小趣事
采用更合理的电路布局和元件选型,减少因设计不当导致的故障。
Data Translation Inc公司的发展小趣事

Data Translation一直以客户为中心,致力于为客户提供优质的产品和服务。公司不断创新产品设计和制造技术,以满足客户对数据采集和处理性能、稳定性、易用性等方面的需求。同时,公司还建立了完善的客户服务体系,为客户提供从产品咨询、选型、安装、调试到售后维护等全方位的服务。这些举措赢得了客户的广泛赞誉和信任,为公司赢得了更多的市场份额和声誉。

CIRCUITCO公司的发展小趣事

随着电子行业的快速发展和变革,CIRCUITCO公司面临着前所未有的挑战和机遇。为了应对这些变革,公司不断调整战略布局,积极拓展新的业务领域。例如,公司开始关注物联网、人工智能等新兴领域的发展,加大在这些领域的研发投入。同时,公司也积极探索国际化发展的道路,通过与国外企业的合作与交流,不断提升自身的国际竞争力。通过这些举措,CIRCUITCO公司成功应对了行业变革带来的挑战,实现了持续稳健的发展。

这五个故事展示了CIRCUITCO公司在电子行业中的发展历程,涵盖了技术研发、市场拓展、生产线升级、人才引进和战略布局等方面。这些故事虽然是虚构的,但基于电子行业的一般性发展和可能的情况,能够反映出一家公司在该行业中可能经历的一些典型事件。

Arima Lasers Corp公司的发展小趣事

随着产品线的丰富和技术的成熟,Arima Lasers Corp开始积极寻求市场拓展的机会。公司首先与一些知名的电子设备制造商建立了合作关系,为其提供定制的激光解决方案。这些合作不仅帮助公司扩大了市场份额,也提升了品牌知名度。随后,Arima Lasers Corp进一步拓展了国际市场,与海外企业开展技术交流和贸易往来,推动了公司的全球化发展。

DIPTRONICS MANUFACTURING INC公司的发展小趣事

随着技术的不断进步,圜达实业不断投入研发,成功推出了一系列具有创新性和竞争力的产品,如旋转开关、滑动开关等。这些产品不仅满足了市场的需求,还为公司赢得了良好的口碑。此外,公司还获得了TS 16949及ISO-14001认证,进一步提升了产品品质和竞争力。

问答坊 | AI 解惑

TI 公司DSP产品相关FAQ整理

问:请TI公司的DSP技术专家GeorgeShen先生和AccountManager王剑先生做一下自我介绍。(10:36:50 AM)答:大家好,这里是TI公司的盛戎华、王剣,很高兴和大家一起讨论TI的DSP产品。 Good morning! Hello this is George Sheng, an Field Application Eng ...…

查看全部问答>

贴片元器件(密引脚IC)焊接教程

贴片元器件(密引脚IC)焊接教程…

查看全部问答>

首次发帖---国内最详细的linux基础教程(不过是第一版)---网域时代的教程

确实详细,只是版本有点老,贡献一下,供参考。 点击此处下载 或粘帖:http://download.eeworld.net/source/2251570…

查看全部问答>

如何去理解NTFS格式

如题,如何了解NTFS格式(各方面)。。。 有什么推荐的书?…

查看全部问答>

2410 的存储器以及有关启动的问题????????

2410 内部     1  ram起始地址被映射到哪里?容量有多大?     2  rom起始地址被映射到哪里?容量有多大? 2410 启动方式:     3  2410外启动时,第一条指令时在哪里执行的? & ...…

查看全部问答>

[求助]请教sim卡中通讯录的存储问题

大家好! 我们要开发一个sim卡的读卡器 gsm协议中提到了dialling number的概念,但是并没有明确提出通讯录是如何存储的, 请教大家dialling number和通讯录之间是什么关系?是不是通过读取dialling number就 可以读取通讯录了? 谢谢! …

查看全部问答>

OP放大器的双极性与FET连接的概念

什么是OP放大器的双极性连接 什么有是FET连接呢?谢谢…

查看全部问答>

求教LVDT传感器问题

我用高精度LVDT传感器测位移,LVDT信号调理电路是厂家自带的,我现在保持测头固定不动,隔半分钟测量一次,每次测量值(一次采样100个数据求平均值)下降一个mV,请问这是怎么回事?就算是LVDT受温度影响也不至于变化这么快吧?难道信号调理电路有 ...…

查看全部问答>

用ATMEGA16控制NRF905进行简单的收发,调了一周了,希望哪位大侠能帮俺播开云雾!!

发送段代码: #include <iom16v.h>#include <macros.h>#define uint  unsigned int#define uchar unsigned char#define   Low_TX_EN      PORTD&=~(1 << PD7)#define   High ...…

查看全部问答>