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之ADC应用(基于F1库函数)
下一篇:TIMER之pwm应用
推荐阅读
史海拾趣
本帖最后由 paulhyde 于 2014-9-15 09:08 编辑 课程设计 问了老师, 说了等于没说, 哪位达人知道怎么做教教!!!! E-mail: zhangtao_zt21@yahoo.com.cn 万分感谢 [ 本帖最后由 open82977352 于 2010-2-2 10:49 编辑 ] … 查看全部问答∨ |
|
#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的状态。… 查看全部问答∨ |
/******************************************************************************* * Macro Name : SetEPDblBuffCount / SetEPDblBuf0Count / SetEPDblBuf1Count. * Description : Gets buffer 0/1 address of a double buffer endpoint. ...… 查看全部问答∨ |
|
主回路——开关电源中,功率电流流经的通路。主回路一般包含了开关电源中的开关器件、储能器件、脉冲变压器、滤波器、输出整流器、等所有功率器件,以及供电输入端和负载端。 开关电源(直流变换器)的类型很多,在研究开发或者维修电源系统时 ...… 查看全部问答∨ |
很显然,设计一个可靠的系统,需要一些ESD保护。虽然有几种瞬态保护装置可供选择,但选择时仍应十分谨慎。如果器件选择不当,就不能发挥作用,而且还会干扰电路的正常工作。为了抑制便携系统的瞬态过程,保护装置必须具有以下特性: 1 ...… 查看全部问答∨ |