//Cortex体系定时器SysTick供给1个24位、降序、零束缚、写铲除的计数器,具有灵敏的操控机制
#include“stm32f10x_lib.h”
GPIO_InitTypeDefGPIO_InitStructure;//界说用于初始化装备GPIO的结构体变量
staticvu32TimingDelay;//界说为volatile类型
ErrorStatusHSEStartUpStatus;//界说枚举类型的过错状况
voidTimingDelay_Decrement(void);
voidRCC_Configuration(void);
voidNVIC_Configuration(void);
voidDelay(vu32nTime);
intmain(void)
{
#ifdefDEBUG
debug();
#endif
RCC_Configuration();//体系时钟装备
NVIC_Configuration();//NVIC装备
//体系默许SysTick是8分频(HCLK/8)当时体系时钟72M的话72/8=9MHZ
SysTick_SetReload(9000);//假如设置9000时,计数到9000时,发生1MS中止
//该函数设置SysTick的重装载值,由于是一个24位的计数器,所以重装载值必须在1到0x00ffffff之间
//敞开SysTick中止
SysTick_ITConfig(ENABLE);//使能或许失能SysTick中止,参数取值有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;//设为推挽输出形式
GPIO_Init(GPIOB,&GPIO_InitStructure);//用装备好的结构体初始化PB口
GPIO_Write(GPIOB,GPIO_Pin_6|GPIO_Pin_8);//向GPIOB的6,8脚写数据
while(1)
{
GPIO_Write(GPIOB,(u16)~GPIO_ReadOutputData(GPIOB));//GPIOB口状况取反
Delay(500);//延时500MS
GPIO_Write(GPIOB,(u16)~GPIO_ReadOutputData(GPIOB));
Delay(500);//延时500MS
}
}
voidRCC_Configuration(void)
{
//复位RCC外部设备寄存器到默许值
RCC_DeInit();
//翻开外部高速晶振
RCC_HSEConfig(RCC_HSE_ON);
//等候外部高速时钟准备好
HSEStartUpStatus=RCC_WaitForHSEStartUp();
//外部高速时钟现已准别好
if(HSEStartUpStatus==SUCCESS)
{
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
FLASH_SetLatency(FLASH_Latency_2);
//装备AHB(HCLK)时钟=SYSCLK
RCC_HCLKConfig(RCC_SYSCLK_Div1);
//装备APB2(PCLK2)钟=AHB时钟
RCC_PCLK2Config(RCC_HCLK_Div1);
//装备APB1(PCLK1)钟=AHB1/2时钟
RCC_PCLK1Config(RCC_HCLK_Div2);
//装备ADC时钟=PCLK21/4
RCC_ADCCLKConfig(RCC_PCLK2_Div4);
//装备PLL时钟==外部高速晶体时钟*9
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);//PLL频率为8*9=72MHz
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/ruanjian/256303.html