chehao8 发表于 2018-2-26 23:06:52

请教STM8S单片机IO口输出波形的问题

单片机输出的波形按理是0或1高低电平变化的,不会有中间任何电平出现的。但我最近发现一个产品,用显示器观看一个IO口对单片机地输出的波形居然有0.25V的中间电平的波形输出,请看下图,这是什么原因呢?单片机的型号是STM8S103F3P6。请教各位大神了。

chehao8 发表于 2018-2-27 17:26:02

最近在做这个可控硅调光器,请问各位大神,有什么办法可以用外部的上升和下降沿去同步控制硬件的PWM输出呢?我现在用外部中断来将100Hz的硬件PWM内部计数器清零和开始计数,同时给个标志位,在TIM4定时中断里输出PWM信号,同时计时到9.5毫秒后停止PWM内部计算器计数。这方法虽然可以,但输出的PWM信号有点漂浮不稳定。如果不用外部中断去控制硬件PWM,100Hz的硬件PWM输出是十分稳定的。看技术文档17.4.5里有个触发同步的,不知怎么用?

//exti
@far @interrupt void EXTI3_PORTD_TROGGER_IRQHandler(void)// 下降上升沿外部触发
{

    EXTI_flag=TRUE;
                TIM1_CNTRH = 0x00;
                TIM1_CNTRL = 0x00;
                TIM1_CR1|= 0x01;
                return;
}

////////////////////////////////////////////////////////////
/////////////////////中断时间 20us//////////////////////
////////////////////////////////////////////////////////////
//tim4 interrupt         
@far @interrupt void TIM4_UPD_OVF_IRQHandler(void)
{
        TIM4_SR = 0x00;//clear 0
       
        if(EXTI_flag)
        {
                send_pwm_out();       
                time2++;       
                if (time2==490)            //
                {
                        time2=0;
                        EXTI_flag=FALSE;
                        PD_CR2 |= (1<<GPIO_TB);//开外部中断
                        TIM1_CR1&= 0xFE;
                }
        }
}

toofree 发表于 2018-2-26 23:36:01

本帖最后由 toofree 于 2018-2-26 23:38 编辑

把测试的现场拍个图片。
示波器的“地”接在哪个位置?有没有连到MCU地管脚处,还是在电源入输入端?
这个IO外部驱动的什么电路,什么情况下置1?有没有其它相关的判断条件。正常最简的闪灯灯程序,是不应该出现这个“0.25V”的。
原理图是什么样的?程序是直接驱动输出1和0吗?

wenyangzeng 发表于 2018-2-27 07:32:32

如果是LCD驱动,就有可能

wudianjun2001 发表于 2018-2-27 08:44:06

这个也要看看你外部的电路的,和程序的设置

Johnson Cao 发表于 2018-2-27 08:45:03

用的哪个IO,是不是开漏?

chehao8 发表于 2018-2-27 17:07:22

应该是先用了开漏输出,然后用了硬件PWM输出(即推挽输出),IO口外部电路如下图:

板子粉丝 发表于 2018-2-28 09:57:55

谢谢分享!

mengyuanmei 发表于 2019-3-26 13:50:46

楼主,请问你查看STM8芯片引脚输出波形图的软件是什么啊?

mengyuanmei 发表于 2019-3-26 13:52:09

楼主,请问你查看STM8芯片引脚输出波形图的软件是什么啊?
页: [1]
查看完整版本: 请教STM8S单片机IO口输出波形的问题