本帖最后由 baiyni888 于 2018-10-16 19:40 编辑 我在使用STM8S103F3 单片机定时器2产生PWM信号时,是没有问题的,CH1 CH2 CH3 都是能正常输出PWM信号的; 但是在使用 定时器1 产生PWM信号时,一直就没有信号输出来,因为我想用到 反向的信号,所以想用 定时器1产生PWM,可以有互补信号出来 #include <iostm8s103f3.h> ////////////这是定时器1产生PWM信号的初始化 void timer1_PWM(void) { CLK_PCKENR2 = 0x80;//开启定时器1外设时钟 // TIM1_EGR |= 0x01; //重新初始化TIM1 // TIM1_RCR = 0x00; TIM1_PSCRH =0; //设定预分频为,16分频 8M TIM1_PSCRL =0x01; //PWM的时钟 影响周期 TIM1_CCER1 = 0x55; //CC2ER1开启1,2,高电平有效 TIM1_CCMR1 = 0x60; //PWM模式1,CC1配置入输出 TIM1_ARRH = 0x00; //设定重装载值 TIM1_ARRL = 0xff; //PWM的周期 TIM1_CCR1H = 0x00; TIM1_CCR1L = 0x14; // 占空比值 //TIM1_IER = 0x01; //允许更新中断 TIM1_CR1 = 0x01; //使能TIM1计数器 TIM1_BKR = 0x80; } ////GPIO端口初始化 void GPIO_init() { PC_DDR=0xff; //方向输出 PC_CR1=0xff; //推挽方式 PC_CR2=0; PC_ODR=0; //输出低电平 } void main() { timer1_PWM(); GPIO_init(); while(1) { ; } } 目前在单片机的 13 14 16 17 输出脚上没有信号 |
STM8S003F3U6 请求各位大佬支援,但是遇到如下问题。。。这样就一定是这颗芯片的问题吗?
STVD如何生成库文件
STM8 flash 库函数 startaddress = startaddress + ((uint32_t)BlockNum * FLASH_BLOCK_S
stm 8 flash 在RAM运行代码的问题,是不是库函数有问题 Library call (?sll32_l0_l0_a) from within a
STM 有能替代MCHC912B32CFUE8 / NXP的型号吗?
STM8S的CAN总线使用
STM8L151在使用DAC功能后严重发热
STM8 IIC SLAVE 400K
STM8S 定时器1互补输出pwm
STM8S003F3 NRST电压低,无法开机
#include <iostm8s103f3.h>
#define uint unsigned int
#define uchar unsigned char
定时器2产生PWM是正常的,代码如下:
#include <iostm8s103f3.h>
void timer2_PWM(void)
{
TIM2_CCMR1 = 0x70;
TIM2_CCMR2 = 0x70;
TIM2_CCER1 = 0x33;
TIM2_CCMR3 = 0x70; //pwm模式2
TIM2_CCER2 = 0x03; //CC3引脚使能
//设定频率-----------------------------
//2^1=2分频
TIM2_PSCR = 0x01;
//初始化自动装载寄存器
TIM2_ARRH = 0x00;
TIM2_ARRL = 0xFF;
//初始化比较寄存器,决定PWM 方波的占空比
TIM2_CCR1H = 0;
TIM2_CCR1L = 50;
TIM2_CCR2H = 0;
TIM2_CCR2L = 150;
TIM2_CCR3L = 100;
TIM2_CCR3H = 0; //默认输出低
TIM2_CR1 = 0x01;// 启动计数
}
void main()
{
PD_DDR =0xff; //方向为输出
PD_CR1 =0xff; //推挽方式 PA_DDR =0x0f;
PA_CR1 =0x0f;
timer2_PWM();
while(1);
}
可以在STM8S103F3单片机的 1 10 20 三个脚同时输出三个PWM信号,占空比50微秒,100微秒,150微秒高电平方波信号