|
main.c
/**定時(shí)器中斷TIM3方式,(當(dāng)基本定時(shí)器不用PWM輸出)
設(shè)計(jì)兩路輸出兩路脈沖波:
周期:100us,占空比80%
周期:100us,占空比20%**/
int main(void)
{
LED_Init();//pc14引腳初始化
BEEP_Init();/pc13引腳初始化
TIME_Init();//定時(shí)器初始化
while(1);
}
time.c
#include "stm32f10x.h"
#include "time.h"
#include "delay.h"
#include "beep.h"
#include<stdio.h>
void TIME_Init(void)
{
TIM_TimeBaseInitTypeDef time3;//定義基本定時(shí)器結(jié)構(gòu)體名字
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //時(shí)鐘使能
//定時(shí)器time4初始化
time3.TIM_Prescaler=72-1;//設(shè)置用來作為TIMx時(shí)鐘頻率除數(shù)的預(yù)分頻值7199
time3.TIM_Period=10-1; //設(shè)置在下一個(gè)更新事件裝入活動(dòng)的自動(dòng)重裝載寄存器周期的值4999
TIM_TimeBaseInit(TIM3,&time3); //根據(jù)指定的參數(shù)初始化TIMx的時(shí)間基數(shù)單位
TIM_Cmd(TIM3,ENABLE ); //使能指定的TIMx
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM4中斷,允許更新中斷
//中斷優(yōu)先級(jí)NVIC設(shè)置
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3中斷
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占優(yōu)先級(jí)0級(jí)
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //從優(yōu)先級(jí)3級(jí)
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
NVIC_Init(&NVIC_InitStructure); //初始化NVIC寄存器
}
//定時(shí)器4中斷服務(wù)程序
int i=0;
void TIM3_IRQHandler(void) //TIM4中斷
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) ==1) //檢查TIM4更新中斷發(fā)生與否
{
if(i<2)
GPIO_ResetBits(GPIOC,GPIO_Pin_13);
else
GPIO_SetBits(GPIOC,GPIO_Pin_13);
if(i<5)
GPIO_ResetBits(GPIOC,GPIO_Pin_14);
else
GPIO_SetBits(GPIOC,GPIO_Pin_14);
i++;
if(i>9)
i=0;
TIM_ClearITPendingBit(TIM3,TIM_IT_Update); //清除TIMx更新中斷標(biāo)志
}
}
|
-
評(píng)分
-
查看全部評(píng)分
|