新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > stm32快速學習7——LED閃爍(TIM2查詢)

        stm32快速學習7——LED閃爍(TIM2查詢)

        作者: 時間:2016-11-17 來源:網絡 收藏
        #include"stm32f10x_gpio.h"

        #include"stm32f10x_rcc.h"

        本文引用地址:http://www.104case.com/article/201611/315445.htm

        #include"stm32f10x_flash.h"

        #include"stm32f10x_tim.h"

        #include"misc.h"

        voidRCC_Configuration(void);

        voidGPIO_Configuration(void);

        voidTIM_Configuration(void);

        intmain(void)

        {

        RCC_Configuration();

        GPIO_Configuration();

        TIM_Configuration();

        while(1)

        {

        if(TIM_GetFlagStatus(TIM2,TIM_FLAG_Update)!=RESET)

        {

        TIM_ClearFlag(TIM2,TIM_FLAG_Update);

        if(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_0)==0)

        GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);

        else

        GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);

        }

        }

        }

        voidRCC_Configuration(void)

        {

        ErrorStatusHSEStartUpStatus;

        RCC_DeInit();

        RCC_HSEConfig(RCC_HSE_ON);

        HSEStartUpStatus=RCC_WaitForHSEStartUp();

        if(HSEStartUpStatus==SUCCESS)

        {

        FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

        FLASH_SetLatency(FLASH_Latency_2);

        RCC_HCLKConfig(RCC_SYSCLK_Div1);

        RCC_PCLK2Config(RCC_HCLK_Div1);

        RCC_PCLK1Config(RCC_HCLK_Div2);

        RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);

        RCC_PLLCmd(ENABLE);

        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)

        {

        }

        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

        while(RCC_GetSYSCLKSource()!=0x08)

        {

        }

        }

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);

        }

        voidGPIO_Configuration(void)

        {

        GPIO_InitTypeDefGPIO_InitStructure;

        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;

        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

        GPIO_Init(GPIOA,&GPIO_InitStructure);

        }

        voidTIM_Configuration(void)

        {

        //假設TIM2的時鐘源APB1(PCLK1)是36M

        //CK_CNT=36M/(TIM_Prescaler+1)預分頻后的頻率=定時器的時鐘源/預分頻數

        //f=CK_CNT/(1+TIM_Period)定時器實際頻率=預分頻后的頻率/溢出計數值

        //f=36M/[(TIM_Prescaler+1)×(1+TIM_Period)]

        //T=1/f

        //T=[(TIM_Prescaler+1)×(1+TIM_Period)]/3600000

        //1s=(3600×10000)/36M

        //1s=[(3599+1)×(9999+1)]/36M

        TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;

        TIM_TimeBaseStructure.TIM_Period=9999;//定時器計數值0-65535(0xFFFF)

        TIM_TimeBaseStructure.TIM_Prescaler=3599;//分頻計數0-65535(0xFFFF)

        TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;//時間分割值,APB1(PCLK1)分頻(頻率降低),這個值固定了定時器最小周期時間,第一級的分頻

        TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//選擇向上計數

        TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);//初始化定時器基本設定

        TIM_ClearFlag(TIM2,TIM_FLAG_Update);

        TIM_Cmd(TIM2,ENABLE);//使能TIM2

        }



        關鍵詞: stm32LED閃爍TIM2查

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 德江县| 五寨县| 安仁县| 龙口市| 大连市| 久治县| 高平市| 柳江县| 凉城县| 涞源县| 常熟市| 云和县| 临泉县| 乐陵市| 桑日县| 天门市| 揭阳市| 漳平市| 新泰市| 乐清市| 云林县| 靖边县| 平邑县| 静乐县| 华坪县| 芜湖市| 岳普湖县| 忻城县| 灌云县| 尖扎县| 长兴县| 丽江市| 固安县| 莱州市| 会泽县| 敦煌市| 突泉县| 车险| 金华市| 定南县| 隆回县|