找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3968|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STM32F107定時器實(shí)現(xiàn)1秒 PC9管腳狀態(tài)反轉(zhuǎn)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:432028 發(fā)表于 2018-11-24 12:25 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
#include "stm32f10x.h"
void delay(void);//調(diào)用延時函數(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)
{
        /*定義一個以GPIO_InitStructure為名的GPIO_InitTypeDef類型的結(jié)構(gòu)體*/
        GPIO_InitTypeDef GPIO_InitStructure;

        /*使能GPIOC和GPIOD時鐘*/
        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)?時不分頻,所以減1*/
        TIM_TimeBaseStructure.TIM_Prescaler=(7200-1);  
               
        /*自動裝載的計數(shù)值,因?yàn)橛嫈?shù)從0 開始,所以減1*/
          TIM_TimeBaseStructure.TIM_Period=(10000-1);            

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

        /*向上計數(shù)*/
          TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
        
        /*重復(fù)計數(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計數(shù)器,開始工作*/
        TIM_Cmd(TIM1,ENABLE);
}

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

}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表