我爱下载 发表于 2018-10-22 13:44

新驱动力MM32F031开发板评测:外设PWM和UART的使用

<div class='showpostmsg'> 本帖最后由 我爱下载 于 2018-10-22 13:45 编辑

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

对UART的修改:
在官方代码的基础上增加了输入获取功能,支持kbhit()和getchar()
添加如下代码://重定向fgetc函数

int fgetc(FILE*f)

{      

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

    return (UART1->RDR & 0x00ff);

}



int kbhit(void)

{

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

            return 0;

       else return 1;

}




主程序代码的修改:

while(1)      

    {

            ledflushcount++;

            if(ledflushcount >= 100000)

            {

                     ledflushcount = 0;

                     D2_TOGGLE();

            }

            if(kbhit())

            {

                     key = getchar();

                     switch(key)

                     {

                            case 'a':   

                            {

                                 if(led0pwmval < 100)

                                          led0pwmval += 10;

                                 pwmtarget = PWM_PERCEND(led0pwmval);

                            }

                            break;

                            case 's':

                            {

                                 if(led0pwmval >= 10)

                                          led0pwmval -= 10;

                                 pwmtarget = PWM_PERCEND(led0pwmval);

                            }

                            break;

                     }

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

                     

            }

            if(pwmtarget != pwmcurrent)

            {

                     if(pwmtarget > pwmcurrent)

                            pwmcurrent++;

                     else if(pwmtarget < pwmcurrent)

                            pwmcurrent--;

                     TIM_SetCompare1(TIM3, pwmcurrent);   

            }

    }      




执行效果:




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



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


</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>
页: [1]
查看完整版本: 新驱动力MM32F031开发板评测:外设PWM和UART的使用