本帖最后由 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 输出脚上没有信号 |
STMS005K6T6 如何采集内部参考电压。
stm8s003 adc中断和通道切换的问题
adc施密特触发器stm8
stm8l051f3 TSSOP20 封装,待机模式下,2天后,电流突然增加到140UA
STM8S用STVP烧录怎么加密?
如何使用ST官网例程_LIN总线通讯_STM8AF
STM8 LIN
IAR代码编辑太费劲了,想问一下有没有好的方法,试了VScode但是头文件老是报错,调了很久也没调好,想换个方法了。
想问一下各位大佬,IAR下载调试代码时出现 warning: is an illegal data sample expression IAR是什么意思啊?
STM8S标准库TIM1编码器功能不计数,请大师帮我看看
#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微秒高电平方波信号