新聞中心

        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查

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 浑源县| 蓬安县| 哈密市| 济阳县| 睢宁县| 南江县| 玉环县| 兰考县| 固原市| 宽甸| 三河市| 潜江市| 洛阳市| 丹阳市| 弋阳县| 南安市| 盖州市| 定州市| 伊金霍洛旗| 揭阳市| 东宁县| 新源县| 乐都县| 长丰县| 平潭县| 乌恰县| 广饶县| 台中县| 吉首市| 故城县| 梅州市| 汽车| 胶州市| 安顺市| 吉木乃县| 永新县| 樟树市| 绩溪县| 三亚市| 汕尾市| 长顺县|