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