|
main.c中
#include "stm32f10x.h"
#include "time.h"
/****TIM3的通道2《CH2》(PA7)產生一路PWM輸出:
周期10ms,占空比30%****/
int main(void)
{
TIM3_PWM_Init();
while(1);
}
time.c中
#include "stm32f10x.h"
#include "time.h"
#include<stdio.h>
void TIM3_PWM_Init(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //TIM3定時器時鐘使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能GPIOA(PA7)時鐘
//設置CH2(PA7)引腳配置--復用輸出功能
GPIO_InitTypeDef PA7;//定義GPIOx結構體名字
PA7.GPIO_Pin=GPIO_Pin_7;
PA7.GPIO_Mode=GPIO_Mode_AF_PP;//復用推挽輸出
PA7.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&PA7);//初始化GPIOA
//定時器TIM3時基參數配置
TIM_TimeBaseInitTypeDef time3;//定義基本定時器結構體名字
time3.TIM_ClockDivision=TIM_CKD_DIV1; //設置捕獲輸入分頻
time3.TIM_CounterMode=TIM_CounterMode_Up;//設置計數模式:TIM向上計數模式
time3.TIM_Prescaler=7200-1;//設置用來作為TIMx時鐘頻率除數的預分頻值
time3.TIM_Period=100-1;//設置重裝載值(周期)
TIM_TimeBaseInit(TIM3,&time3); //根據指定的參數初始化TIMx的時間基數單位
//TIM3時通道2輸出參數配置 PWM模式
TIM_OCInitTypeDef time3_oC2;
time3_oC2.TIM_OCMode=TIM_OCMode_PWM1; //選擇定時器模式:TIM脈沖寬度調制模式1
time3_oC2.TIM_OutputState=TIM_OutputState_Enable; //比較輸出使能
time3_oC2.TIM_OCPolarity=TIM_OCPolarity_High;//輸出極性:有效電平為高
time3_oC2.TIM_Pulse=30;//比較值
TIM_OC2Init(TIM3,&time3_oC2); //根據T指定的參數初始化外設TIM3 OC2
TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能TIM3在CCR2上的預裝載寄存器
TIM_Cmd(TIM3,ENABLE ); //使能指定的TIMx
}
|
評分
-
查看全部評分
|