2566|0

337

帖子

2

TA的资源

纯净的硅(初级)

楼主
 

新驱动力MM32F031开发板评测:外设PWM和UART的使用 [复制链接]

本帖最后由 我爱下载 于 2018-10-22 13:45 编辑

外设单元pwm和uart的使用评测

测试pwm和uart外设单元,程序依据例程中TIM的PWM例程修改得到,评测主要内容为Uart作为标准输入输出外设接受用户的控制命令,打印程序运行状态,控制pwm按照设计要求改变占空比。Pwm设计为10KHz固定频率可变占空比方式输出,利用TIM3输出端子为PB4,占空比调整范围0%~100%。

对PWM初始化的理解:


对UART的修改:

在官方代码的基础上增加了输入获取功能,支持kbhit()和getchar()

添加如下代码:
  1. //重定向fgetc函数

  2. int fgetc(FILE*f)

  3. {      

  4.    while((UART1->CSR&UART_IT_RXIEN)==0);

  5.     return (UART1->RDR & 0x00ff);

  6. }



  7. int kbhit(void)

  8. {

  9.     if((UART1->CSR&UART_IT_RXIEN)==0)

  10.               return 0;

  11.        else return 1;

  12. }
复制代码




主程序代码的修改:


  1. while(1)      

  2.     {

  3.               ledflushcount++;

  4.               if(ledflushcount >= 100000)

  5.               {

  6.                      ledflushcount = 0;

  7.                      D2_TOGGLE();

  8.               }

  9.               if(kbhit())

  10.               {

  11.                      key = getchar();

  12.                      switch(key)

  13.                      {

  14.                             case 'a':   

  15.                             {

  16.                                    if(led0pwmval < 100)

  17.                                           led0pwmval += 10;

  18.                                    pwmtarget = PWM_PERCEND(led0pwmval);

  19.                             }

  20.                             break;

  21.                             case 's':

  22.                             {

  23.                                    if(led0pwmval >= 10)

  24.                                           led0pwmval -= 10;

  25.                                    pwmtarget = PWM_PERCEND(led0pwmval);

  26.                             }

  27.                             break;

  28.                      }

  29.                      printf("PWM PER = %d %%\n", led0pwmval);

  30.                      

  31.               }

  32.               if(pwmtarget != pwmcurrent)

  33.               {

  34.                      if(pwmtarget > pwmcurrent)

  35.                             pwmcurrent++;

  36.                      else if(pwmtarget < pwmcurrent)

  37.                             pwmcurrent--;

  38.                      TIM_SetCompare1(TIM3, pwmcurrent);     

  39.               }

  40.     }      

复制代码



执行效果:





通过不断的调大和调小占空比,红色小灯的亮度随着变亮和变暗。



此内容由EEWORLD论坛网友我爱下载原创,如需转载或用于商业用途需征得作者同意并注明出处


此帖出自电机控制论坛
点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表