永发信息网

STM32 TIM1 123通道不能输出PWM,4通道可以,是怎么回事

答案:1  悬赏:30  手机版
解决时间 2021-11-29 10:38
  • 提问者网友:树红树绿
  • 2021-11-28 22:27
STM32 TIM1 123通道不能输出PWM,4通道可以,是怎么回事
最佳答案
  • 五星知识达人网友:何以畏孤独
  • 2021-11-29 00:03
//用固件库方便些#include "stm8s_lib.h"#define CCR1_Val ((u16)2047)
#define CCR2_Val ((u16)1535)
#define CCR3_Val ((u16)1023)
#define CCR4_Val ((u16)511)
void main(void)
{
TIM1_DeInit();
TIM1_TimeBaseInit(0, TIM1_COUNTERMODE_UP, 4095, 0);


TIM1_OC1Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE, CCR1_Val, TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_SET, TIM1_OCIDLESTATE_RESET);
TIM1_OC2Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE, CCR2_Val, TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_SET, TIM1_OCIDLESTATE_RESET);
TIM1_OC3Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE, CCR3_Val, TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_SET, TIM1_OCIDLESTATE_RESET);
// TIM1_OC4Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, CCR4_Val, TIM1_OCPOLARITY_LOW, TIM1_OCIDLESTATE_SET);

//GPIO_Init(GPIOD,GPIO_PIN_7,GPIO_MODE_OUT_PP_LOW_FAST);
//OPT_Init1.OPT2=(OPT_Init1.OPT2|0x10);
TIM1_Cmd(ENABLE);
TIM1_CtrlPWMOutputs(ENABLE);

while (1)
{
}
}#ifdef FULL_ASSERT
void assert_failed(u8 *file, u16 line)
#else
void assert_failed(void)
#endif
{


while (1)
{
}
} //不用固件库直接操作我只试过 TIM2 TIM3 不过TIM1应该差不多,你自己参考,我只知道这么多了,莫追问void TIM2_init(void) //TIM2 CH1 工作于模式1
{
TIM2_CCMR1= 0x60; // PWM 模式 1,TIM2 CH1
TIM2_CCER1= 0x03; // CC1配置为输出
TIM2_CCER2= 0x03; // CC3使能
TIM2_ARRH = 0x03; // 配置PWM分辨率为10位,ARR=0x3FF
TIM2_ARRL = 0xFF; // PWM频率=8M/0x03FF=7820Hz
TIM2_CR1 |= 0x01; // 计数器使能,开始计数
}void Run(void)
{ TIM2_CCR1=value;
TIM2_CCR3=value;
TIM3_CCR2=value;
TIM3_CCR1=value; //注意每个通道都要设CCR
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯