#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
}
|