裴红恩 发表于 2024-2-10 20:22

国民技术车规MCU N32A455开发板测评 - 1 - IO输入输出+板子简单介绍

<div class='showpostmsg'> 本帖最后由 裴红恩 于 2024-2-10 20:22 编辑

<p><span style="background-color:#ecf0f1;">感谢</span><span style="background-color:#f1c40f;">论坛</span><span style="background-color:#ecf0f1;">以及</span><span style="background-color:#f1c40f;">国民技术车规MCU</span><span style="background-color:#ecf0f1;">提供的</span><span style="background-color:#f1c40f;">N32A455开发板</span><span style="background-color:#ecf0f1;">的试用机会。</span></p>

<p>STEP 1:板子开箱-N32A455开发板一块+usb转Mini 5p数据线一根</p>

<p>&nbsp;</p>

<div style="text-align: center;">
<div style="text-align: center;">
<div style="text-align: left;"></div>

<div style="text-align: left;">STEP 2:开发板基本情况介绍</div>

<div style="text-align: left;">Modu 1:Mini母座连接N32G452CCL7单片机,此单片机内部集成有usb通讯接口,作为一个烧写器连接N32A455。(程序烧录调试正常,烧录与调试时候将Boot0连接与GND)</div>

<div style="text-align: left;">Modu 2:N32G452CCL7串口与N32A455烧写口需要短接,以及MCU3.3V以及Modu 4模块中产生的3.3V需短接。</div>

<div style="text-align: left;">Modu 3:Modu 4模块中产生的3.3V电源以及GND。</div>

<div style="text-align: left;">Modu 4:MP2359-DJ模块将12V电源转化为5V,ASM1117将5V转化为3.3V以及一个5V到ASM1117的开关(电源模块电压正常)</div>

<div style="text-align: left;">Modu 5:直接可以通过外部的jlink以及其他的烧写器进行程序的烧录与调试。(外部jlink连接烧录正常)</div>

<div style="text-align: left;">Modu 6:五个按键,一个复位按键,一个按键按下连接3.3V,三个按键按下时连接一个电阻到GND。(按键可以正常使用)</div>

<div style="text-align: left;">
<div style="text-align: center;"></div>

<div style="text-align: center;"></div>

<p>(温馨提示:烧录程序时记得将Boot改变一下)</p>

<p>STEP 3:&nbsp;IO输入输出实现简单的按键控制三色LED变色(依据官方例程更改而来)</p>
</div>

<div style="text-align: left;">
<p>Modu 1:IO输入采用的是n32a455_gpio头文件中的GPIO_ReadInputDataBit引脚电平读取函数,在LedKeyInit函数中进行引脚的初始化具体如:</p>

<pre>
<code class="language-objectivec">void LedKeyInit(void)
{
                GPIO_InitType GPIO_InitStructure;//定义引脚初始化结构体
                /* Check the parameters */
            assert_param(IS_GPIO_ALL_PERIPH(GPIOA));
                RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOA, ENABLE);
                GPIO_InitStructure.Pin      = GPIO_PIN_0;//引脚名
                GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP;//工作模式
                GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
                GPIO_InitPeripheral(GPIOA, &amp;GPIO_InitStructure);
}</code></pre>

<p>Modu 2:IO口的输出采用的是对寄存器PBC以及PBSC进行操作来改变引脚电平的输出,引脚电平变低通过LedOn,引脚输出变高通过LedOff,LED引脚初始化通过LedInit函数。</p>
</div>
</div>

<div style="text-align: left;">
<pre>
<code class="language-objectivec">/**
* @briefTurns selected Led on.
* @param GPIOx x can be A to G to select the GPIO port.
* @param Pin This parameter can be GPIO_PIN_0~GPIO_PIN_15.
*/
void LedOn(GPIO_Module* GPIOx, uint16_t Pin)
{
    GPIOx-&gt;PBC = Pin;
}
/**
* @briefTurns selected Led Off.
* @param GPIOx x can be A to G to select the GPIO port.
* @param Pin This parameter can be GPIO_PIN_0~GPIO_PIN_15.
*/
void LedOff(GPIO_Module* GPIOx, uint16_t Pin)
{
                GPIOx-&gt;PBSC = Pin;
}
/**
* @briefConfigures LED GPIO.
* @param GPIOx x can be A to G to select the GPIO port.
* @param Pin This parameter can be GPIO_PIN_0~GPIO_PIN_15.
*/
void LedInit(GPIO_Module* GPIOx, uint16_t Pin)
{
    GPIO_InitType GPIO_InitStructure;

    /* Check the parameters */
    assert_param(IS_GPIO_ALL_PERIPH(GPIOx));

    /* Enable the GPIO Clock */
    if (GPIOx == GPIOA)
    {
      RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOA, ENABLE);
    }
    else if (GPIOx == GPIOB)
    {
      RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOB, ENABLE);
    }
    else if (GPIOx == GPIOC)
    {
      RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOC, ENABLE);
    }
    else if (GPIOx == GPIOD)
    {
      RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOD, ENABLE);
    }
    else if (GPIOx == GPIOE)
    {
      RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOE, ENABLE);
    }
    else
    {
    }

    /* Configure the GPIO pin */
    if (Pin &lt;= GPIO_PIN_ALL)
    {
      GPIO_InitStructure.Pin      = Pin;
      GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP;
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
      GPIO_InitPeripheral(GPIOx, &amp;GPIO_InitStructure);
    }
}</code></pre>

<p>&nbsp;</p>
</div>

<div style="text-align: left;">STEP 3:main函数如下所示</div>

<div style="text-align: left;">
<pre>
<code class="language-objectivec">int main(void)
{
    LedInit(PORT_GROUP2, LED1_PIN | LED2_PIN);//初始化led引脚PA11 PA12
                LedInit(PORT_GROUP1, LED6_PIN);//初始化led引脚PB10
                LedKeyInit();//初始化按键输入引脚PA0
                LedOn(PORT_GROUP2, LED1_PIN);//打开红色
                LedOff(PORT_GROUP2, LED2_PIN);//关闭绿色
                LedOff(PORT_GROUP1, LED6_PIN);//关闭蓝色

    while (1)
                          {
                                        if(GPIO_ReadInputDataBit(GPIOA, GPIO_PIN_0) == 1 &amp;&amp; keyFlag == 1)//获取引脚的电压至并且防止长时间按下变色以及防抖
                                        {
                                                Delay(0x28FFFF);
                                                if(GPIO_ReadInputDataBit(GPIOA, GPIO_PIN_0) == 1 &amp;&amp; keyFlag == 1)
                                                {
                                                        keyFlag = 0;//一次按下不可重复二次进入
                                                        ++ledFlag;//色彩变化
                                                        if(ledFlag &gt;= 3)
                                                        {
                                                                ledFlag = 0;
                                                        }else{}
                                                        switch(ledFlag)
                                                        {
                                                                case 0:
                                                                {
                                                                        LedOff(PORT_GROUP2, LED2_PIN);
                                                                        LedOff(PORT_GROUP1, LED6_PIN);
                                                                        LedOn(PORT_GROUP2, LED1_PIN);
                                                                        break;
                                                                }
                                                                case 1:
                                                                {
                                                                        LedOff(PORT_GROUP2, LED1_PIN);
                                                                        LedOff(PORT_GROUP1, LED6_PIN);
                                                                        LedOn(PORT_GROUP2, LED2_PIN);
                                                                        break;
                                                                }
                                                                case 2:
                                                                {
                                                                        LedOff(PORT_GROUP2, LED1_PIN|LED2_PIN);
                                                                        LedOn(PORT_GROUP1, LED6_PIN);
                                                                        break;
                                                                }
                                                                default:break;
                                                        }
                                                }
                                               
                                        }else if(GPIO_ReadInputDataBit(GPIOA, GPIO_PIN_0) == 0 &amp;&amp; keyFlag == 0){
                                                keyFlag = 1;
                                        }else{}
    }
}</code></pre>

<p>&nbsp;</p>
</div>

<p>&nbsp;</p>
</div>

<p>&nbsp;</p>
</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>

1nnocent 发表于 2024-2-10 21:31

<p>看来ee的坛友都不过年</p>

<p>&nbsp;</p>

<p><img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/lol.gif" width="48" /></p>

裴红恩 发表于 2024-2-11 08:45

1nnocent 发表于 2024-2-10 21:31
看来ee的坛友都不过年

&nbsp;

<p>没有朋友,没事干<img height="53" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/sad.gif" width="54" /></p>

nmg 发表于 2024-2-18 18:20

裴红恩 发表于 2024-2-11 08:45
没有朋友,没事干

<p><img height="52" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/pleased.gif" width="48" />板卡是你的朋友,玩的如何了,继续来分享哈</p>

裴红恩 发表于 2024-2-19 11:25

nmg 发表于 2024-2-18 18:20
板卡是你的朋友,玩的如何了,继续来分享哈

<p>好的,<img height="52" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/wanwan19.gif" width="57" />最近在移植esp8266-s1 wifi模块连接板卡到百度智能云</p>
页: [1]
查看完整版本: 国民技术车规MCU N32A455开发板测评 - 1 - IO输入输出+板子简单介绍