[mw_shl_code=c,true]#include "stm8l15x_clk.h"
#include "stm8l15x_tim1.h"
#include "stm8l15x_gpio.h"
#include "stm8l15x.h"
//默认自动重装载值为10000
//默认预分频系数为1600
//捕获比较寄存器
#define width_1 1000
#define width_2 2000
#define width_3 3000
#define width_4 4000
#define width_5 5000
#define width_6 6000
#define width_7 7000
#define width_8 8000
#define width_9 9000
#define width_10 10000
void BSP_Configuration(void);
void TIM_PWM1_Init()
{
TIM1_DeInit();
TIM1_ARRPreloadConfig (ENABLE);//使能自动重装载寄存器
TIM1_TimeBaseInit(0,TIM1_CounterMode_Up,2000,0x00);//TIM1的基本初始化
//TIM1的输出通道1的初始化
TIM1_OC1Init(TIM1_OCMode_PWM1, //初始化比较/捕获通道
TIM1_OutputState_Enable, //TIM1输出使能
TIM1_OutputNState_Disable, //TIM1互补输出关闭
1000, //脉冲宽度值
TIM1_OCPolarity_Low,//输出比较极性高
TIM1_OCNPolarity_Low, //输出互补比较极性高(无用)
TIM1_OCIdleState_Set, //输出比较空闲置位(高)
TIM1_OCNIdleState_Reset);//互补输出比较空闲状态
TIM1_OC1PreloadConfig(ENABLE);//输出比较1的预装载使能
TIM1_CtrlPWMOutputs(ENABLE);//输出PWM控制位使能
TIM1_Cmd(ENABLE);//开启TIM1定时器
}
int main()
{
BSP_Configuration();//初始化
//TIM_PWM1_Init(10000,width_5);
GPIO_ResetBits(GPIOD,GPIO_Pin_3);
GPIO_SetBits(GPIOD,GPIO_Pin_3);
GPIO_ResetBits(GPIOD,GPIO_Pin_3);
TIM_PWM1_Init();
while(1)
{
TIM1_SetCompare1(1000);
}
}
void BSP_Configuration(void)
{
CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSE);
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
CLK_HSEConfig(CLK_HSE_ON);
GPIO_Init(GPIOD,GPIO_Pin_2,GPIO_Mode_Out_PP_High_Fast);
GPIO_Init(GPIOD,GPIO_Pin_3,GPIO_Mode_Out_PP_High_Fast);
// _enable_interrupt();
}
void assert_failed(u8* file, u32 line)
{
while (1)
{
}
}
[/mw_shl_code]
主要就是让stm8输出pwm但是在示波器上怎么也观察不到现象,源代码的PD3来回跳没有意义,无须在意。谢各位大佬
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
TIM1_BKR的MOE(B7)一定要设为"1" , 才会有输出的
一周热门 更多>