初级会员

- 积分
- 59
- 金钱
- 59
- 注册时间
- 2020-6-22
- 在线时间
- 17 小时
|
3金钱
主函数:
#include "delay.h"
#include "sys.h"
#include "pwm.h"
//ALIENTEK Mini STM32¿a·¢°å·¶ày′úÂë8
//PWMêä3öêμÑé
//¼¼êõÖ§3Ö£owww.openedv.com
//1ãÖYêDDÇòíμç×ó¿Æ¼¼óDÏT1«Ë¾
int main(void)
{
u16 led0pwmval=0;
//u8 dir=1;
delay_init(); //Ñóê±oˉêy3õê¼»ˉ //3õê¼»ˉóëLEDᬽóμÄó2¼t½ó¿ú
TIM1_PWM_Init(1439,999);//2»·ÖÆμ¡£PWMÆμÂê=72000/(899+1)=80Khz
while(1)
{
//led0pwmval=37;
// TIM_SetCompare1(TIM1,led0pwmval);
// delay_ms(1000); //0¶è£¬Ñóê±1s
// led0pwmval=60;
// TIM_SetCompare1(TIM1,led0pwmval);
// delay_ms(1000); //45¶è
// led0pwmval=93;
// TIM_SetCompare1(TIM1,led0pwmval);
// delay_ms(1000); //90¶è
led0pwmval=125;
TIM_SetCompare4(TIM1,led0pwmval);
delay_ms(1000); //135¶è
led0pwmval=160;
TIM_SetCompare4(TIM1,led0pwmval);
delay_ms(1000); //180¶è
}
}
pwm函数:
#include "pwm.h"
void TIM1_PWM_Init(u16 arr ,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
GPIO_InitTypeDef GPIO_InitStructure;
TIM_OCInitTypeDef TIM_OCInitStrure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//ê1ÄüGPIOD
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);//ê1Äüê±ÖóTIM4
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
TIM_TimeBaseStructure.TIM_Period= arr;
TIM_TimeBaseStructure.TIM_Prescaler=psc;
TIM_TimeBaseStructure.TIM_ClockDivision=0;
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);
TIM_OCInitStrure.TIM_OCMode=TIM_OCMode_PWM2;
TIM_OCInitStrure.TIM_OCPolarity=TIM_OCPolarity_High;
TIM_OCInitStrure.TIM_Pulse=0;
TIM_OCInitStrure.TIM_OutputState=TIM_OutputState_Enable;
TIM_OC4Init(TIM1,&TIM_OCInitStrure);
TIM_CtrlPWMOutputs(TIM1,ENABLE);
//GPIO_PinRemapConfig(GPIO_PartialRemap_TIM1,ENABLE);
TIM_OC4PreloadConfig(TIM1,TIM_OCPreload_Enable);
TIM_ARRPreloadConfig(TIM1,ENABLE);
TIM_Cmd(TIM1,ENABLE);
}
|
-
|