//Cortex系統(tǒng)定時(shí)器SysTick提供1個(gè)24位、降序、零約束、寫清除的計(jì)數(shù)器,具有靈活的控制機(jī)制
本文引用地址:http://m.butianyuan.cn/article/201611/322883.htm
#include"stm32f10x_lib.h"
GPIO_InitTypeDefGPIO_InitStructure;//定義用于初始化配置GPIO的結(jié)構(gòu)體變量
staticvu32TimingDelay;//定義為volatile類型
ErrorStatusHSEStartUpStatus;//定義枚舉類型的錯(cuò)誤狀態(tài)
voidTimingDelay_Decrement(void);
voidRCC_Configuration(void);
voidNVIC_Configuration(void);
voidDelay(vu32nTime);
intmain(void)
{
#ifdefDEBUG
debug();
#endif
RCC_Configuration();//系統(tǒng)時(shí)鐘配置
NVIC_Configuration();//NVIC配置
//系統(tǒng)默認(rèn)SysTick是8分頻(HCLK/8)當(dāng)前系統(tǒng)時(shí)鐘72M的話72/8=9MHZ
SysTick_SetReload(9000);//如果設(shè)置9000時(shí),計(jì)數(shù)到9000時(shí),產(chǎn)生1MS中斷
//該函數(shù)設(shè)置SysTick的重裝載值,因?yàn)槭且粋€(gè)24位的計(jì)數(shù)器,所以重裝載值必須在1到0x00ffffff之間
//開啟SysTick中斷
SysTick_ITConfig(ENABLE);//使能或者失能SysTick中斷,參數(shù)取值有ENABEL或DISABEL
//開啟GPIOB端口使能APB2
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;//選中第6,7,8,9腳
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//GPIO速度為50MHz
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//設(shè)為推挽輸出模式
GPIO_Init(GPIOB,&GPIO_InitStructure);//用配置好的結(jié)構(gòu)體初始化PB口
GPIO_Write(GPIOB,GPIO_Pin_6|GPIO_Pin_8);//向GPIOB的6,8腳寫數(shù)據(jù)
while(1)
{
GPIO_Write(GPIOB,(u16)~GPIO_ReadOutputData(GPIOB));//GPIOB口狀態(tài)取反
Delay(500);//延時(shí)500MS
GPIO_Write(GPIOB,(u16)~GPIO_ReadOutputData(GPIOB));
Delay(500);//延時(shí)500MS
}
}
voidRCC_Configuration(void)
{
//復(fù)位RCC外部設(shè)備寄存器到默認(rèn)值
RCC_DeInit();
//打開外部高速晶振
RCC_HSEConfig(RCC_HSE_ON);
//等待外部高速時(shí)鐘準(zhǔn)備好
HSEStartUpStatus=RCC_WaitForHSEStartUp();
//外部高速時(shí)鐘已經(jīng)準(zhǔn)別好
if(HSEStartUpStatus==SUCCESS)
{
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
FLASH_SetLatency(FLASH_Latency_2);
//配置AHB(HCLK)時(shí)鐘=SYSCLK
RCC_HCLKConfig(RCC_SYSCLK_Div1);
//配置APB2(PCLK2)鐘=AHB時(shí)鐘
RCC_PCLK2Config(RCC_HCLK_Div1);
//配置APB1(PCLK1)鐘=AHB1/2時(shí)鐘
RCC_PCLK1Config(RCC_HCLK_Div2);
//配置ADC時(shí)鐘=PCLK21/4
RCC_ADCCLKConfig(RCC_PCLK2_Div4);
//配置PLL時(shí)鐘==外部高速晶體時(shí)鐘*9
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);//PLL頻率為8*9=72MHz
評論