打印
[应用方案]

【NuMaker-M471测评】+开箱及点灯

[复制链接]
1007|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
拿到M471板子已经3天了,今天有空,来开下箱~




还是一如既往的风格,没啥好说的,新唐板子用料一向是舍得的,板上晶振啥的都没有缺省~
然后我们开始下载资料,我们用MDK开发:
下载网址(蛋,找了好久,新唐的网站后缀加cn和不加cn还不同,不加cn面向整个国际,资料更全。
我之前在cn的网站,找了半天就是没有M471的资料~有些无语)
http://www.nuvoton.com.cn/board/numaker-m471ki/?index=2

介绍挺全的,快速上手指导首次也有。
DS_M471V_M471K_Series_EN_Rev1.20.pdf (3.1 MB)
TRM_M471V_M471K_Series_EN_Rev1.20.pdf (8.41 MB)
UM_NuMaker-M471KI_EN_Rev1.00.pdf (5.74 MB)
软件部分的MDK支持包和BSP太大,大家自己去下载啊。
装好 ,解压好BSP:
开发环境大家好,我们下面就可以写个简单的测试代码了:
我们打开BSP里面的例程,选个最简的例程,进行修改:

打开:

结构很清爽,没有任何第三方的库及集中写在一起的板子资源的文件,对初学者非常友好。
新唐的MCU最大的特点就是GPIO,仍保持C51的一些特性,譬如准双向等,位操作等,用过51转新唐
上手速度绝对比ST的要快。可惜新唐的推广力度不足,加上一些用户反映的BUG的处理能力不是很及时及
工业恶劣环境的不稳定性都拖了后腿。
我们看板上有LED,KEY,USART,我们就用这几个外设写个小程序。
我们先看下硬件连接图:
串口的对应引脚(USART0):



LED的对应引脚:

KEY的对应引脚:

我们对打开的简单例程进行修改:
main.c
/**************************************************************************//**
* [url=home.php?mod=space&uid=288409]@file[/url]     main.c
* [url=home.php?mod=space&uid=895143]@version[/url]  V3.00
* [url=home.php?mod=space&uid=247401]@brief[/url]    Show how to set GPIO pin mode and use pin data input/output control.
*
* SPDX-License-Identifier: Apache-2.0
* [url=home.php?mod=space&uid=17282]@CopyRight[/url] (C) 2020 Nuvoton Technology Corp. All rights reserved.
******************************************************************************/
#include "stdio.h"
#include "NuMicro.h"


void SYS_Init(void)
{
    /* Unlock protected registers */
    SYS_UnlockReg();

    /* Set XT1_OUT(PF.2) and XT1_IN(PF.3) to input mode */
    PF->MODE &= ~(GPIO_MODE_MODE2_Msk | GPIO_MODE_MODE3_Msk);

    /* Enable HIRC clock (Internal RC 48 MHz) */
    CLK_EnableXtalRC(CLK_PWRCTL_HIRCEN_Msk);

    /* Wait for HIRC clock ready */
    CLK_WaitClockReady(CLK_STATUS_HIRCSTB_Msk);

    /* Set core clock as 96MHz from PLL */
    CLK_SetCoreClock(FREQ_96MHZ);

    /* Set PCLK0/PCLK1 to HCLK/2 */
    CLK->PCLKDIV = (CLK_PCLKDIV_APB0DIV_DIV2 | CLK_PCLKDIV_APB1DIV_DIV2);

    /* Enable UART clock */
    CLK_EnableModuleClock(UART0_MODULE);

    /* Select UART clock source from HIRC */
    CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART0SEL_HIRC, CLK_CLKDIV0_UART0(1));

    /* Update System Core Clock */
    /* User can use SystemCoreClockUpdate() to calculate SystemCoreClock. */
    SystemCoreClockUpdate();

    /*----------------------------------------------------------------------*/
    /* Init I/O Multi-function                                              */
    /*----------------------------------------------------------------------*/
    /* Set GPB multi-function pins for UART0 RXD and TXD */
    SYS->GPB_MFPH = (SYS->GPB_MFPH & ~(SYS_GPB_MFPH_PB12MFP_Msk | SYS_GPB_MFPH_PB13MFP_Msk)) |
                    (SYS_GPB_MFPH_PB12MFP_UART0_RXD | SYS_GPB_MFPH_PB13MFP_UART0_TXD);

    /* Lock protected registers */
    SYS_LockReg();
}

/*----------------------------------------------------------------------*/
/* Init UART0                                                           */
/*----------------------------------------------------------------------*/
void UART0_Init(void)
{
    /* Reset UART0 */
    SYS_ResetModule(UART0_RST);

    /* Configure UART0 and set UART0 baud rate */
    UART_Open(UART0, 115200);
}
/*----------------------------------------------------------------------*/
/* Init LED0       PB14                                                   */
/*----------------------------------------------------------------------*/
#define LED0  PB14
void LED_Init(void)
{
     /* Configure PB.14 as Output mode */
    GPIO_SetMode(PB, BIT14, GPIO_MODE_OUTPUT);
    /* Set PB.14 output pin value is low */
    PB14 = 0;
}

/*----------------------------------------------------------------------*/
/* Init KEY0       PH4                                                   */
/*----------------------------------------------------------------------*/
#define KEY0  PH4
void KEY_Init(void)
{
     /* Configure PH.4 as Input mode */
    GPIO_SetMode(PH, BIT4, GPIO_MODE_INPUT);
    /* Set PB.14 output pin value is HIGH */
    PH4 = 1;
}

int32_t main(void)
{

    /* Init System, IP clock and multi-function I/O. */
    SYS_Init();

    LED_Init();
    KEY_Init();
    /* Init UART0 for printf */
    UART0_Init();

    printf("\n\nCPU [url=home.php?mod=space&uid=72445]@[/url] %dHz\n", SystemCoreClock);
   
    while(1)
    {
   
        if(KEY0==0)
        {
            while(KEY0==0){};
            LED0=~LED0;
            (LED0>0)?printf("LED1 STA IS HIGHT !\r\n"):printf("LED1 STA IS LOW!\r\n");
        }
   
    }
}
编译下载,查看串口输出,按下KEY,LED切换一个状态:

LED切换状态:


好了,开箱帖就到这了~~


使用特权

评论回复
沙发
单片小菜| | 2021-8-3 12:15 | 只看该作者
这个评测确实不错的,就是图片动画效果不太好。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

111

主题

627

帖子

2

粉丝