fxyc87 发表于 2022-1-25 12:04

【国民技术N32G457评测】四、PWM及呼吸灯测试

<p>我的相关贴子:</p>

<p><a href="https://bbs.eeworld.com.cn/thread-1192408-1-1.html" target="_blank">【国民技术N32G457评测】一、资料准备</a></p>

<p><a href="https://bbs.eeworld.com.cn/thread-1192642-1-1.html" target="_blank">【国民技术N32G457评测】二、开箱+点灯</a></p>

<p><a href="https://bbs.eeworld.com.cn/thread-1192796-1-1.html" target="_blank">【国民技术N32G457评测】三、ADC及串口功能测试</a></p>

<hr />
<p>&nbsp;</p>

<p>PWM初始化代码</p>

<p>LED3以100HZ频率闪烁,亮暗逐渐变化,产生呼吸效果。</p>

<pre>
<code class="language-cpp">
void PwmInit(void)                //PWM定时器初始化       
{
       
        //开启T1时钟 + AFIO
    RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_TIM1|RCC_APB2_PERIPH_AFIO,ENABLE);
       
        //GPIO引脚复用
        //PA8/TIM1_CH1/LED1
    GPIO_InitType gpio;
    gpio.Pin=GPIO_PIN_8;      
    gpio.GPIO_Mode=GPIO_Mode_AF_PP;
    gpio.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitPeripheral(GPIOA,&amp;gpio);
        //tim1部分引脚映射
        GPIO_ConfigPinRemap(GPIO_PART1_RMP_TIM1,ENABLE);

       
        //tim1定时器相关
        //144M/14400=10KHZ/ 10000 =1HZ
        //        /100=100hz
        TIM_TimeBaseInitType tim_base;
    tim_base.Prescaler = 14400;
    tim_base.CntMode   = TIM_CNT_MODE_UP;
    tim_base.Period    = 100;
    tim_base.ClkDiv    = 0;//TIM_CLK_DIV4;
    tim_base.RepetCnt= 0;       
        TIM_InitTimeBase(TIM1, &amp;tim_base);
       
        OCInitType tim;       
    tim.OcMode       = TIM_OCMODE_PWM1;
    tim.OutputState= TIM_OUTPUT_STATE_ENABLE;
    tim.OutputNState = TIM_OUTPUT_NSTATE_ENABLE;
    tim.Pulse      = 5000;                //占空比
    tim.OcPolarity   = TIM_OC_POLARITY_LOW;
    tim.OcNPolarity= TIM_OCN_POLARITY_HIGH;
    tim.OcIdleState= TIM_OC_IDLE_STATE_SET;
    tim.OcNIdleState = TIM_OC_IDLE_STATE_RESET;
       
        TIM_InitOc1(TIM1,&amp;tim);
       
        TIM_Enable(TIM1,ENABLE);
       
        TIM_EnableCtrlPwmOutputs(TIM1,ENABLE);
       
}</code></pre>

<hr />
<p>主运行代码,10mS调用一次此函数,1秒循环一次</p>

<pre>
<code class="language-cpp">void Task2(void){                //呼吸灯        10ms
        static uint16_t count=0;
        static int dir=0;
       
        TIM_SetCmp1(TIM1,count);
        if(dir==0){
                count++;
                if(count&gt;100){
                        dir=!dir;
                }
        }else{
                count--;
                if(count&gt;65000){
                        count=0;
                        dir=!dir;
                }               
        }
}</code></pre>

<p>&nbsp;</p>

<p>相关引用文件</p>

<pre>
<code class="language-cpp">#include "n32g45x.h"
#include "n32g45x_gpio.h"
#include "bsp.h"
#include &lt;n32g45x_tim.h&gt;</code></pre>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><span style="color:#d35400;">申明:我的相关贴子均为我原创,手工敲出来的,不是拿个DEMO下载运行一下就完事。</span></p>

<p>&nbsp;</p>

<p>视频效果:</p>

<p>二楼上传</p>

fxyc87 发表于 2022-1-25 12:16

<p><iframe allowfullscreen="true" frameborder="0" height="450" src="//player.bilibili.com/player.html?bvid=1RZ4y1o73B&amp;page=1" style="background:#eee;margin-bottom:10px;" width="700"></iframe><br />
&nbsp;</p>

<p>运行效果</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>准备回老家了,剩下的年后评测。</p>

lugl4313820 发表于 2022-1-25 13:31

fxyc87 发表于 2022-1-25 12:16
&nbsp;

运行效果

&nbsp;

&nbsp;

&nbsp;

准备回老家了,剩下的年后评测。

<p>可以呀,回老家,也可以带回去弄的!</p>

annysky2012 发表于 2022-1-25 16:51

<p>还不如年后在测,回家好好陪家人才是正道<img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/lol.gif" width="48" /></p>

soso 发表于 2022-1-26 11:45

<p>赞楼主认真态度:)</p>

soso 发表于 2022-1-26 11:45

<p>祝新年快乐~~</p>

fxyc87 发表于 2022-1-26 12:12

soso 发表于 2022-1-26 11:45
祝新年快乐~~

<p>谢谢。</p>

se7ens 发表于 2022-1-27 13:54

<p>呼吸灯不错</p>

<p>曾经用运放和555都调过</p>

<p>感觉PWM可能效果更好</p>

fxyc87 发表于 2022-2-1 13:06

se7ens 发表于 2022-1-27 13:54
呼吸灯不错

曾经用运放和555都调过

感觉PWM可能效果更好

<p>是PWM啊,每隔10mS修改一次PWM占空比</p>
页: [1]
查看完整版本: 【国民技术N32G457评测】四、PWM及呼吸灯测试