[应用方案] 【NuMaker-M471测评】+开箱及点灯

[复制链接]
1270|1
 楼主| qjp1988113 发表于 2021-8-3 10:52 | 显示全部楼层 |阅读模式
拿到M471板子已经3天了,今天有空,来开下箱~
AA1.jpg
AA2.jpg
AA3.jpg
AA4.jpg
还是一如既往的风格,没啥好说的,新唐板子用料一向是舍得的,板上晶振啥的都没有缺省~
然后我们开始下载资料,我们用MDK开发:
下载网址(蛋,找了好久,新唐的网站后缀加cn和不加cn还不同,不加cn面向整个国际,资料更全。
我之前在cn的网站,找了半天就是没有M471的资料~有些无语)
http://www.nuvoton.com.cn/board/numaker-m471ki/?index=2
DD1.png
介绍挺全的,快速上手指导首次也有。
DS_M471V_M471K_Series_EN_Rev1.20.pdf (3.1 MB, 下载次数: 5)
TRM_M471V_M471K_Series_EN_Rev1.20.pdf (8.41 MB, 下载次数: 7)
UM_NuMaker-M471KI_EN_Rev1.00.pdf (5.74 MB, 下载次数: 1)
软件部分的MDK支持包和BSP太大,大家自己去下载啊。
装好 AA7.png ,解压好BSP: AA8.png
开发环境大家好,我们下面就可以写个简单的测试代码了:
我们打开BSP里面的例程,选个最简的例程,进行修改:
DD6.png
打开:
DD7.png
结构很清爽,没有任何第三方的库及集中写在一起的板子资源的文件,对初学者非常友好。
新唐的MCU最大的特点就是GPIO,仍保持C51的一些特性,譬如准双向等,位操作等,用过51转新唐
上手速度绝对比ST的要快。可惜新唐的推广力度不足,加上一些用户反映的BUG的处理能力不是很及时及
工业恶劣环境的不稳定性都拖了后腿。
我们看板上有LED,KEY,USART,我们就用这几个外设写个小程序。
我们先看下硬件连接图:
串口的对应引脚(USART0):
DD2.png
DD3.png
DD4.png
LED的对应引脚:
DD5.png
KEY的对应引脚:
DD8.png
我们对打开的简单例程进行修改:
main.c
  1. /**************************************************************************//**
  2. * [url=home.php?mod=space&uid=288409]@file[/url]     main.c
  3. * [url=home.php?mod=space&uid=895143]@version[/url]  V3.00
  4. * [url=home.php?mod=space&uid=247401]@brief[/url]    Show how to set GPIO pin mode and use pin data input/output control.
  5. *
  6. * SPDX-License-Identifier: Apache-2.0
  7. * [url=home.php?mod=space&uid=17282]@CopyRight[/url] (C) 2020 Nuvoton Technology Corp. All rights reserved.
  8. ******************************************************************************/
  9. #include "stdio.h"
  10. #include "NuMicro.h"


  11. void SYS_Init(void)
  12. {
  13.     /* Unlock protected registers */
  14.     SYS_UnlockReg();

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

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

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

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

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

  25.     /* Enable UART clock */
  26.     CLK_EnableModuleClock(UART0_MODULE);

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

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

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

  38.     /* Lock protected registers */
  39.     SYS_LockReg();
  40. }

  41. /*----------------------------------------------------------------------*/
  42. /* Init UART0                                                           */
  43. /*----------------------------------------------------------------------*/
  44. void UART0_Init(void)
  45. {
  46.     /* Reset UART0 */
  47.     SYS_ResetModule(UART0_RST);

  48.     /* Configure UART0 and set UART0 baud rate */
  49.     UART_Open(UART0, 115200);
  50. }
  51. /*----------------------------------------------------------------------*/
  52. /* Init LED0       PB14                                                   */
  53. /*----------------------------------------------------------------------*/
  54. #define LED0  PB14
  55. void LED_Init(void)
  56. {
  57.      /* Configure PB.14 as Output mode */
  58.     GPIO_SetMode(PB, BIT14, GPIO_MODE_OUTPUT);
  59.     /* Set PB.14 output pin value is low */
  60.     PB14 = 0;
  61. }

  62. /*----------------------------------------------------------------------*/
  63. /* Init KEY0       PH4                                                   */
  64. /*----------------------------------------------------------------------*/
  65. #define KEY0  PH4
  66. void KEY_Init(void)
  67. {
  68.      /* Configure PH.4 as Input mode */
  69.     GPIO_SetMode(PH, BIT4, GPIO_MODE_INPUT);
  70.     /* Set PB.14 output pin value is HIGH */
  71.     PH4 = 1;
  72. }

  73. int32_t main(void)
  74. {

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

  77.     LED_Init();
  78.     KEY_Init();
  79.     /* Init UART0 for printf */
  80.     UART0_Init();

  81.     printf("\n\nCPU [url=home.php?mod=space&uid=72445]@[/url] %dHz\n", SystemCoreClock);
  82.    
  83.     while(1)
  84.     {
  85.    
  86.         if(KEY0==0)
  87.         {
  88.             while(KEY0==0){};
  89.             LED0=~LED0;
  90.             (LED0>0)?printf("LED1 STA IS HIGHT !\r\n"):printf("LED1 STA IS LOW!\r\n");
  91.         }
  92.    
  93.     }
  94. }
编译下载,查看串口输出,按下KEY,LED切换一个状态:
DD11.png
LED切换状态:
1627959012288.gif

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


单片小菜 发表于 2021-8-3 12:15 | 显示全部楼层
这个评测确实不错的,就是图片动画效果不太好。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

111

主题

627

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部