• 基于MS16F3211芯片的触摸控制灯的状态变化和亮度控制(11.17,PWM控制与状态切换)


    1.今天做了什么

    2.过程思路

    看了两天文档才慢慢看懂,有点满了

    现在接着前一天的思路,可以通过代码来控制pwm的占空比。我这里采用的是TP0定时器

    初步控制pwm的占空比

    1. void LED_PWM_OPEN(void)
    2. {
    3. //占空比 PWM1-Y-PB2
    4. PWM1DH = 0X0F;
    5. PWM1DL = 0X00;
    6. //占空比 PWM01-W-PB1
    7. PWM0DTH = 0X01;
    8. PWM0DTL = 0X00;
    9. //占空比 PWM0-BLUE-PB0
    10. //PWM0DH = 0XFF;
    11. //PWM0DL = 0X00;
    12. //周期
    13. PWM0PH = 0X00;
    14. PWM0PL = 0X00;
    15. //PB0输出
    16. PWMPSCON = 0x04;//--11 1111 :PB0-OUT
    17. //pwm0c
    18. PWM0C = 0xc2;//PWM0C_Buf; //11-- 0011 :Fosc/2
    19. //PWM0EN
    20. PWM0EN = 0x9d;//PWM0EN_Buf; //1-01 1101 :TP0-EN;8BIT;PWM0X-EN;独立模式;PWM-EN
    21. FTP0IF = 0;//TP0 溢出中断标志位,TP0 溢出时被置位,软件清除
    22. FTP0IE = 1;//TP0 溢出中断使能位(1=使能,0=失能)
    23. FTP0EN = 1;//启动 TP0 定时器
    24. FGIE = 1;//开全局中断
    25. }

    然后在中断函数中调用

    1. void interrupt myIsr(void)
    2. {
    3. if (FTP0IF)
    4. {
    5. FTP0IF = 0;
    6. }
    7. //----User Code End----
    8. }

    思路简略得写在注释了,以后总结再详细一点。

    设定PWM的值可以在3s内由最高降到最低

    现在需要设定PWM的值可以在3s内由最高降到最低,那么通过设置这个定时器每1ms中断一次,占空比每1ms减少0.03%。达到每1s占空比减少30%就可以达到效果

    这里PWM0PH和PWM0PL的值在定时器初始化均设至为0,所以

            PWM0X的占空比等于=占空比设定的值*PWMX0工作时钟源周期
                                               =占空比设定的值*1/PWMX0工作时钟源频率

    这里通过寄存器手册可以得知占空比可以设定的最大值为0XFFF,

    这个寄存器可以设定的最大值为4095,定时器的频率设置为Fosc/2,也就是1950HZ/2=975HZ

    也就是一秒钟中断957次,此时把重装载值设定为1170,与4095之间的差值为975X3。在定时器内对PWM0DL和PWM0DH的值进行调整,那么在3s后占空比就会达到最亮

    通过按键控制PWM输出变化

    原本的思路是在按键扫描函数中设置FTP0IF = 1,然后可以执行

    这一段代码来对PWM的调节。但是结果并不像想象中那个样子,现象为灯的颜色不变,长按或者短按按键均无反应。

    猜想1:是不是按键扫描函数的中断执行的太慢了,导致PWM的值不能及时地累加,导致现象不明显,目前未排除

    猜想2:TP0的定时器中断一直打断TIMER定时器的中断,对应中断函数无法执行。不过发现其他按键依旧可以顺利执行,排除这个可能。

    暂且不管上面,想到个方法采用了在按键扫描中对FTPOIE这个TP0定时器的中断溢出标志位进行改变,相当于控制定时器的开启和关闭。如果点按的话由于事件过短定时器的开启和关闭就一瞬间,对亮度没什么影响。

    3.开发中遇到的卡点

    现在的问题是灯会呼吸一次,并不是渐灭或者渐亮的状态,应该是逻辑还有问题。

    4.想问的问题

    这个芯片的Fcpu和Fosc多大

  • 相关阅读:
    最全面的蓝桥杯常考知识点总结(Python)|冲国赛
    Redis笔记
    CTFHub技能树web之XSS
    GPIO端口之AFIO的完全映射与部分映射的理解
    从 Java 8 升级到 Java 17 全过程,避坑!
    Python与HTTP服务交互
    长尾词挖掘与百度SEO优化实战(利用百度百科和4种挖掘方法)
    前端面经 在地址栏输入URL,到页面呈现,中间会发生
    计算机视觉:基于Numpy的图像处理技术(一):灰度变换、直方图均衡化
    【高效开发工具系列】PlantUML入门使用
  • 原文地址:https://blog.csdn.net/qq_51519091/article/details/134475047