#include "stm32f10x.h"
void delay(void);//調用延時函數
void GPIO_Config(void);//調用GPIO_Config函數
void TIM1_Config(void);
void NVIC_Config(void);//調用NVIC_Config函數
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類型的結構體*/
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的配置進行初始化,并且選擇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);
/*預分頻系數為7200,因為0時不分頻,所以減1*/
TIM_TimeBaseStructure.TIM_Prescaler=(7200-1);
/*自動裝載的計數值,因為計數從0 開始,所以減1*/
TIM_TimeBaseStructure.TIM_Period=(10000-1);
/*采樣分頻之間的分頻比例,0代表不分頻*/
TIM_TimeBaseStructure.TIM_ClockDivision=0;
/*向上計數*/
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
/*重復計數次數為0,即每次溢出都更新*/
TIM_TimeBaseStructure.TIM_RepetitionCounter=0;
/* 根據TIM_TimeBaseStructure的設定設置TIM1*/
TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);
/*清除TIM1溢出中斷標志*/
TIM_ClearITPendingBit(TIM1,TIM_IT_Update);
/*打開溢出中斷標志*/
TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE);
/*使能TIM1計數器,開始工作*/
TIM_Cmd(TIM1,ENABLE);
}
void NVIC_Config(void)
{
/*定義一個以NVIC_InitStructure為名的NVIC_InitTypeDef類型的結構體,該結構體的原型在misc.h中*/
NVIC_InitTypeDef NVIC_InitStructure;
/*在NVIC中配置中斷通道為EXTI3,搶占優先級為7,從優先級為7,并使能該中斷*/
NVIC_InitStructure.NVIC_IRQChannel=TIM1_UP_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0; //沒有搶占優先級
NVIC_InitStructure.NVIC_IRQChannelSubPriority=1; //從優先級為1,從優先級至少為1
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; //在NVIC_InitStructure中使能該中斷
NVIC_Init(&NVIC_InitStructure); //initialize
}
|