標(biāo)題: STM32F107定時(shí)器實(shí)現(xiàn)1秒 PC9管腳狀態(tài)反轉(zhuǎn) [打印本頁]

作者: lipsky    時(shí)間: 2018-11-24 12:25
標(biāo)題: STM32F107定時(shí)器實(shí)現(xiàn)1秒 PC9管腳狀態(tài)反轉(zhuǎn)
#include "stm32f10x.h"
void delay(void);//調(diào)用延時(shí)函數(shù)
void GPIO_Config(void);//調(diào)用GPIO_Config函數(shù)
void TIM1_Config(void);
void NVIC_Config(void);//調(diào)用NVIC_Config函數(shù)

int main(void)
{
        /*配置PC9 為推挽輸出*/
        GPIO_Config();
        /*配置 TIM1 為 1 s中斷*/
        TIM1_Config();
        /*使能TIM1 中斷為向上溢出中斷*/
        NVIC_Config();


        /*等待 TIM1 */
        while(1)
               
        {}
               
}
void GPIO_Config(void)
{
        /*定義一個(gè)以GPIO_InitStructure為名的GPIO_InitTypeDef類型的結(jié)構(gòu)體*/
        GPIO_InitTypeDef GPIO_InitStructure;

        /*使能GPIOC和GPIOD時(shí)鐘*/
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
        /*選擇管腳9*/                                                                                                                                                                                    
        GPIO_InitStructure.GPIO_Pin= GPIO_Pin_9;
        /*選擇管腳速度為50MHz*/
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        /*配置PC9管腳為推挽輸出*/
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        /*按照GPIO_InitStructure的配置進(jìn)行初始化,并且選擇C端口*/
        GPIO_Init(GPIOC, &GPIO_InitStructure);
        
}

void TIM1_Config(void)
{
        /*initialize TIM_TimeBaseInitTypeDef Structure*/
        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
        /*enable the rcc of TIM1*/
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);

    /*預(yù)分頻系數(shù)為7200,因?yàn)?時(shí)不分頻,所以減1*/
        TIM_TimeBaseStructure.TIM_Prescaler=(7200-1);  
               
        /*自動(dòng)裝載的計(jì)數(shù)值,因?yàn)橛?jì)數(shù)從0 開始,所以減1*/
          TIM_TimeBaseStructure.TIM_Period=(10000-1);            

        /*采樣分頻之間的分頻比例,0代表不分頻*/
          TIM_TimeBaseStructure.TIM_ClockDivision=0;

        /*向上計(jì)數(shù)*/
          TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
        
        /*重復(fù)計(jì)數(shù)次數(shù)為0,即每次溢出都更新*/     
          TIM_TimeBaseStructure.TIM_RepetitionCounter=0;
        
        /* 根據(jù)TIM_TimeBaseStructure的設(shè)定設(shè)置TIM1*/        
        TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);

        /*清除TIM1溢出中斷標(biāo)志*/
        TIM_ClearITPendingBit(TIM1,TIM_IT_Update);

        /*打開溢出中斷標(biāo)志*/
        TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE);

        /*使能TIM1計(jì)數(shù)器,開始工作*/
        TIM_Cmd(TIM1,ENABLE);
}

void NVIC_Config(void)
{
        /*定義一個(gè)以NVIC_InitStructure為名的NVIC_InitTypeDef類型的結(jié)構(gòu)體,該結(jié)構(gòu)體的原型在misc.h中*/
        NVIC_InitTypeDef NVIC_InitStructure;
        
        /*在NVIC中配置中斷通道為EXTI3,搶占優(yōu)先級(jí)為7,從優(yōu)先級(jí)為7,并使能該中斷*/
        NVIC_InitStructure.NVIC_IRQChannel=TIM1_UP_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;  //沒有搶占優(yōu)先級(jí)
        NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;                   //從優(yōu)先級(jí)為1,從優(yōu)先級(jí)至少為1
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;                //在NVIC_InitStructure中使能該中斷
        NVIC_Init(&NVIC_InitStructure);                                                //initialize

}





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1