[PIC®/AVR®/dsPIC®产品] CuriosityNano测评报告】+呼吸灯

[复制链接]
1473|5
 楼主| gaoyang9992006 发表于 2020-11-8 22:22 | 显示全部楼层 |阅读模式
创建新的工程,进入MCC设置,将板子上的RF3设置为PWM11输出功能。生成代码,然后进入到pwm1_16bit.c文件,查看生成的可用函数。
根据名字我们就可以确定一些函数的意义。
  1. void PWM1_16BIT_WritePeriodRegister(uint16_t periodCount)
  2. {
  3.     PWM1PRL = (uint8_t)periodCount;
  4.     PWM1PRH = (uint8_t)(periodCount >> 8);
  5. }

  6. void PWM1_16BIT_SetSlice1Output1DutyCycleRegister(uint16_t registerValue)
  7. {   
  8.     PWM1S1P1L = (uint8_t)(registerValue);
  9.     PWM1S1P1H = (uint8_t)(registerValue >> 8);
  10. }

  11. void PWM1_16BIT_SetSlice1Output2DutyCycleRegister(uint16_t registerValue)
  12. {        
  13.     PWM1S1P2L = (uint8_t)(registerValue);
  14.     PWM1S1P2H = (uint8_t)(registerValue >> 8);
  15. }

  16. void PWM1_16BIT_LoadBufferRegisters(void)
  17. {
  18.     //Load the period and duty cycle registers on the next period event
  19.     PWM1CONbits.LD = 1;
  20. }
这几个函数分别是:周期设置,设置输出1的工作时间,设置输出2的工作时间,在下一个周期加载新的周期与工作时间
因此如果我们初始化配置为固定的1KHz,那么这里我们只需要更改工作时间,并加载到下次周期就行了。例如我们在主函数添加如下内容
  1.   unsigned int i=0;
  2.     while (1)
  3.     {
  4.         // Add your application code
  5.         for(i=1;i<1000;i++)
  6.         {
  7.         PWM1_16BIT_SetSlice1Output1DutyCycleRegister(i);
  8.          PWM1_16BIT_LoadBufferRegisters;
  9.         _delay(200);
  10.                
  11.         }

  12.         for(i=1000;i>0;i--)
  13.         {
  14.         PWM1_16BIT_SetSlice1Output1DutyCycleRegister(i);
  15.        PWM1_16BIT_LoadBufferRegisters();
  16.        _delay(200);
  17.         }
  18.         
  19.     }
烧录后,就可以看到开发板上的LED慢慢变亮,又慢慢熄灭了。
建议官方直接提供生成占空比的函数,另外对周期设置与工作时间设置的函数注释提个小建议。
因为是要设置2个寄存器,而注释只说明了一个寄存器的大小,这样不容易理解,建议两个合并后说明
例如设置PWM周期的初始化:
    //PWMPRL 231;
    PWM1PRL = 0xE7;

    //PWMPRH 3;
    PWM1PRH = 0x03;

以上内容是设置周期为0x3E7+1,也就是999+1,
而分开注释是什么意思,难以看懂啊。
不如直接注释一条啊
    //PWMPR   999;
    PWM1PRL = 0xE7;
    PWM1PRH = 0x03;

 楼主| gaoyang9992006 发表于 2020-11-8 22:22 | 显示全部楼层
其他厂家的BSP库函数,都提供的有百分比制的占空比设置,建议提供该函数,这样方便很多的。
gejigeji521 发表于 2020-11-9 10:25 | 显示全部楼层
我觉得提供一套库函数就好了。
小灵通2018 发表于 2020-11-9 12:01 | 显示全部楼层
总结的很好,三个函数,搞定一切啊。
xuanhuanzi 发表于 2020-11-9 12:02 | 显示全部楼层
如果提供库函数,配置的都是库函数对应的,就爽歪歪了。
玛尼玛尼哄 发表于 2020-11-9 19:35 | 显示全部楼层
总是能说到点子上。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2052

主题

16403

帖子

222

粉丝
快速回复 在线客服 返回列表 返回顶部