[文档下载] 新唐NuEdu-SDK-M451开发板快速上手

[复制链接]
1603|5
 楼主| IversonCar 发表于 2015-7-18 21:26 | 显示全部楼层 |阅读模式
得到了一块新唐公司的NuEdu-SDK-M451 开发板。小小使用了一下,分享一下自己的环境(keil uVersion4)搭建过程,和对这款芯片的看法吧,希望和大家能够交流一下使用心得,如果有什么错误还希望大家批评指正。
开发板上板载的芯片型号是: M453VG6AE
下面是这个芯片的具体信息,如果想了解这个芯片更详细的信息请查看新唐官网
• 内核    - ARM® Cortex™-M4 with DSP and FPU    - 最大频率72 MHz    - 工作电压: 2.5V to 5.5V
    - 工作温度: -40℃ ~ 105℃
• 存储
    - 256 KB of Flash Memory
    - 32 KB of SRAM
12-bit ADC (16 通道) 12-bit DAC• 16-bit PWM (12 通道)
定时器    - 4个 32bit 定时器
    - RTC
连接    - USB 2.0 OTG
    - CAN 总线接口
    - 四个 UART 串口
    - 三个 SPI 总线接口
    - 两个 I²C总线接口 (1 MHz)
    - Smart card 接口
    - 两 个 I²S 总线接口
安全    - CRC engine
这片芯片的性能和外设 从参数来看还是可以的,基本该有的功能都有了,采用Cortex-M4的内核,作为一片MCU处理速度还是相当强大的。
    我的电脑里已经装好了keil C uVersion 4 ,在这里我就略过如何安装keil了(还支持IAR、CooCox等开发环境),我在这里只讲下keil开发M451的环境搭建。


 楼主| IversonCar 发表于 2015-7-18 21:26 | 显示全部楼层
本帖最后由 IversonCar 于 2015-7-18 21:28 编辑

1.首先去官网下载如下内容:

       M451芯片手册   M451Series_BSP_CMSIS_V3.00.003.zip 板级支持包

      Nu-Link在keil上的驱动:Nu-Link Driver for Keil RVMDK V1.27.6340.zip

2.安装Nu-Link Driver
(1)将你下载的 Nu-Link_Keil_Driver_V1.27.6340.zip 解压 ,找到里面的安装文件 安装在你的 你的 keil 的安装目录里。(我的安装目录为 E:\Program\Keil u4 , 所以我安装的时候目录选中Keil u4 即可),安装成功后,会出现 Nu-Link_Keil 这个文件夹(E:\Program\Keil u4\Nu-Link_Keil)大家可以直接参考这个文档NuMicro 开发环境 - Keil uVision4 快速上手.pdf完成配置。

(2) 打开keil 之后新建一个工程。
将板级支持包(M451SeriesBSP_CMSIS_v3.00.003 )压缩包中的 M451SeriesBSP_CMSIS_v3.00.003 \Library 下的 CMSIS文件夹 Device文件夹 和 StdDriver 文件夹 复制到你工程所在的文件夹中。
wenjian 1.jpg
(3)在新建的项目中 建立图片上三个文件夹。

(4)为CMSIS 中添加 图片上的文件 (分别在 keil工程所在目录\Library\Device\Nuvoton\M451Series\Source 和 keil工程所在目录\Library\Device\Nuvoton\M451Series\Source\IAR 文件夹中)
user 文件夹中存放用户自己新建的 main.c 文件 也是主程序
library 中添加 ( keil工程所在目录\Library\StdDriver\src )
wenjian 3.jpg
 楼主| IversonCar 发表于 2015-7-18 21:30 | 显示全部楼层
(5)为工程添加头文件 。
peizhi 1.jpg peizhi2.jpg
 楼主| IversonCar 发表于 2015-7-18 21:31 | 显示全部楼层
在 main.c 中放入下面的程序:
  1.     #include <stdio.h>
  2.     #include "M451Series.h"

  3.     #define HCLK_CLOCK       72000000


  4.     void SYS_Init(void)
  5.     {
  6.         /*---------------------------------------------------------------------------------------------------------*/
  7.         /* Init System Clock                                                                                       */
  8.         /*---------------------------------------------------------------------------------------------------------*/
  9.         /* Unlock protected registers */
  10.         SYS_UnlockReg();

  11.         /* Enable HIRC clock (Internal RC 22.1184MHz) */
  12.         CLK_EnableXtalRC(CLK_PWRCTL_HIRCEN_Msk);

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

  15.         /* Select HCLK clock source as HIRC and and HCLK clock divider as 1 */
  16.         CLK_SetHCLK(CLK_CLKSEL0_HCLKSEL_HIRC, CLK_CLKDIV0_HCLK(1));

  17.         /* Enable HXT clock (external XTAL 12MHz) */
  18.         CLK_EnableXtalRC(CLK_PWRCTL_HXTEN_Msk);

  19.         /* Wait for HXT clock ready */
  20.         CLK_WaitClockReady(CLK_STATUS_HXTSTB_Msk);

  21.         /* Set core clock as HCLK_CLOCK */
  22.         CLK_SetCoreClock(HCLK_CLOCK);

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

  26.         /*---------------------------------------------------------------------------------------------------------*/
  27.         /* Init I/O Multi-function                                                                                 */
  28.         /*---------------------------------------------------------------------------------------------------------*/
  29.         /* Set GPD multi-function pins for UART0 RXD and TXD */
  30.         SYS->GPD_MFPL &= ~(SYS_GPD_MFPL_PD6MFP_Msk | SYS_GPD_MFPL_PD1MFP_Msk);
  31.         SYS->GPD_MFPL |= (SYS_GPD_MFPL_PD6MFP_UART0_RXD | SYS_GPD_MFPL_PD1MFP_UART0_TXD);

  32.         /* Lock protected registers */
  33.         SYS_LockReg();
  34.     }


  35.     /*---------------------------------------------------------------------------------------------------------*/
  36.     /* MAIN function                                                                                           */
  37.     /*---------------------------------------------------------------------------------------------------------*/
  38.     int main(void)
  39.     {      
  40.         int i=0;
  41.         SYS_Init();

  42.         /* Select SysTick clock source as HXT */
  43.         CLK_SetSysTickClockSrc(CLK_CLKSEL0_STCLKSEL_HXT);

  44.         /*Configure PC.9 as Output mode */
  45.         GPIO_SetMode(PC, BIT9, GPIO_MODE_OUTPUT);
  46.         GPIO_SetMode(PC, BIT10, GPIO_MODE_OUTPUT);
  47.         GPIO_SetMode(PC, BIT11, GPIO_MODE_OUTPUT);
  48.          
  49.         /*PWM_ConfigOutputChannel(PWM0, PWM_CH_0_MASK, 100, 50);
  50.         PWM_Start(PWM0,BIT0);
  51.         */
  52.         while(1)
  53.         {
  54.             /* Configure PC.9 to low */
  55.             PC9  = 1; // PC10 = 0;PC11 = 0;
  56.             /* Delay 200 ms */
  57.             CLK_SysTickDelay( 200-i);

  58.             /* Configure PC.9 to high */
  59.             PC9  = 0;//PC10 = 1; PC11 = 1;
  60.             /* Delay 200 ms */
  61.             CLK_SysTickDelay(i);
  62.             i++;
  63.             if(++i == 200 ) i=0;
  64.         }

  65.     }



 楼主| IversonCar 发表于 2015-7-18 21:31 | 显示全部楼层
  1.     /**************************************************************************//**
  2.      * [url=home.php?mod=space&uid=288409]@file[/url]     main.c
  3.      * [url=home.php?mod=space&uid=895143]@version[/url]  V1.00
  4.      * $Date: 14/08/28 10:51a $
  5.      * [url=home.php?mod=space&uid=247401]@brief[/url]    Toggle PC.9 to turn on / off the board LED
  6.      *
  7.      * @note
  8.      * Copyright (C) 2013 Nuvoton Technology Corp. All rights reserved.
  9.      *
  10.      ******************************************************************************/
  11.     #include <stdio.h>
  12.     #include "M451Series.h"

  13.     #define HCLK_CLOCK       72000000


  14.     void SYS_Init(void)
  15.     {
  16.         /*---------------------------------------------------------------------------------------------------------*/
  17.         /* Init System Clock                                                                                       */
  18.         /*---------------------------------------------------------------------------------------------------------*/
  19.         /* Unlock protected registers */
  20.         SYS_UnlockReg();

  21.         /* Enable HIRC clock (Internal RC 22.1184MHz) */
  22.         CLK_EnableXtalRC(CLK_PWRCTL_HIRCEN_Msk);

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

  25.         /* Select HCLK clock source as HIRC and and HCLK clock divider as 1 */
  26.         CLK_SetHCLK(CLK_CLKSEL0_HCLKSEL_HIRC, CLK_CLKDIV0_HCLK(1));

  27.         /* Enable HXT clock (external XTAL 12MHz) */
  28.         CLK_EnableXtalRC(CLK_PWRCTL_HXTEN_Msk);

  29.         /* Wait for HXT clock ready */
  30.         CLK_WaitClockReady(CLK_STATUS_HXTSTB_Msk);

  31.         /* Set core clock as HCLK_CLOCK */
  32.         CLK_SetCoreClock(HCLK_CLOCK);

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

  36.         /*---------------------------------------------------------------------------------------------------------*/
  37.         /* Init I/O Multi-function                                                                                 */
  38.         /*---------------------------------------------------------------------------------------------------------*/
  39.         /* Set GPD multi-function pins for UART0 RXD and TXD */
  40.         SYS->GPD_MFPL &= ~(SYS_GPD_MFPL_PD6MFP_Msk | SYS_GPD_MFPL_PD1MFP_Msk);
  41.         SYS->GPD_MFPL |= (SYS_GPD_MFPL_PD6MFP_UART0_RXD | SYS_GPD_MFPL_PD1MFP_UART0_TXD);

  42.         /* Lock protected registers */
  43.         SYS_LockReg();
  44.     }


  45.     /*---------------------------------------------------------------------------------------------------------*/
  46.     /* MAIN function                                                                                           */
  47.     /*---------------------------------------------------------------------------------------------------------*/
  48.     int main(void)
  49.     {      
  50.         int i=0;
  51.         SYS_Init();

  52.         /* Select SysTick clock source as HXT */
  53.         CLK_SetSysTickClockSrc(CLK_CLKSEL0_STCLKSEL_HXT);

  54.         /*Configure PC.9 as Output mode */
  55.         GPIO_SetMode(PC, BIT9, GPIO_MODE_OUTPUT);
  56.         GPIO_SetMode(PC, BIT10, GPIO_MODE_OUTPUT);
  57.         GPIO_SetMode(PC, BIT11, GPIO_MODE_OUTPUT);
  58.          
  59.         /*PWM_ConfigOutputChannel(PWM0, PWM_CH_0_MASK, 100, 50);
  60.         PWM_Start(PWM0,BIT0);
  61.         */
  62.         while(1)
  63.         {
  64.             /* Configure PC.9 to low */
  65.             PC9  = 1; // PC10 = 0;PC11 = 0;
  66.             /* Delay 200 ms */
  67.             CLK_SysTickDelay( 200-i);

  68.             /* Configure PC.9 to high */
  69.             PC9  = 0;//PC10 = 1; PC11 = 1;
  70.             /* Delay 200 ms */
  71.             CLK_SysTickDelay(i);
  72.             i++;
  73.             if(++i == 200 ) i=0;
  74.         }

  75.     }



 楼主| IversonCar 发表于 2015-7-18 21:32 | 显示全部楼层
  1. /**************************************************************************//**
  2. * @file     main.c
  3. * @version  V1.00
  4. * $Date: 14/08/28 10:51a $
  5. * @brief    Toggle PC.9 to turn on / off the board LED
  6. *
  7. * @note
  8. * Copyright (C) 2013 Nuvoton Technology Corp. All rights reserved.
  9. *
  10. ******************************************************************************/
  11. #include <stdio.h>
  12. #include "M451Series.h"

  13. #define HCLK_CLOCK       72000000


  14. void SYS_Init(void)
  15. {
  16.     /*---------------------------------------------------------------------------------------------------------*/
  17.     /* Init System Clock                                                                                       */
  18.     /*---------------------------------------------------------------------------------------------------------*/
  19.     /* Unlock protected registers */
  20.     SYS_UnlockReg();

  21.     /* Enable HIRC clock (Internal RC 22.1184MHz) */
  22.     CLK_EnableXtalRC(CLK_PWRCTL_HIRCEN_Msk);

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

  25.     /* Select HCLK clock source as HIRC and and HCLK clock divider as 1 */
  26.     CLK_SetHCLK(CLK_CLKSEL0_HCLKSEL_HIRC, CLK_CLKDIV0_HCLK(1));

  27.     /* Enable HXT clock (external XTAL 12MHz) */
  28.     CLK_EnableXtalRC(CLK_PWRCTL_HXTEN_Msk);

  29.     /* Wait for HXT clock ready */
  30.     CLK_WaitClockReady(CLK_STATUS_HXTSTB_Msk);

  31.     /* Set core clock as HCLK_CLOCK */
  32.     CLK_SetCoreClock(HCLK_CLOCK);

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

  36.     /*---------------------------------------------------------------------------------------------------------*/
  37.     /* Init I/O Multi-function                                                                                 */
  38.     /*---------------------------------------------------------------------------------------------------------*/
  39.     /* Set GPD multi-function pins for UART0 RXD and TXD */
  40.     SYS->GPD_MFPL &= ~(SYS_GPD_MFPL_PD6MFP_Msk | SYS_GPD_MFPL_PD1MFP_Msk);
  41.     SYS->GPD_MFPL |= (SYS_GPD_MFPL_PD6MFP_UART0_RXD | SYS_GPD_MFPL_PD1MFP_UART0_TXD);

  42.     /* Lock protected registers */
  43.     SYS_LockReg();
  44. }


  45. /*---------------------------------------------------------------------------------------------------------*/
  46. /* MAIN function                                                                                           */
  47. /*---------------------------------------------------------------------------------------------------------*/
  48. int main(void)
  49. {      
  50.     int i=0;
  51.     SYS_Init();

  52.     /* Select SysTick clock source as HXT */
  53.     CLK_SetSysTickClockSrc(CLK_CLKSEL0_STCLKSEL_HXT);

  54.     /*Configure PC.9 as Output mode */
  55.     GPIO_SetMode(PC, BIT9, GPIO_MODE_OUTPUT);
  56.     GPIO_SetMode(PC, BIT10, GPIO_MODE_OUTPUT);
  57.     GPIO_SetMode(PC, BIT11, GPIO_MODE_OUTPUT);
  58.      
  59.     /*PWM_ConfigOutputChannel(PWM0, PWM_CH_0_MASK, 100, 50);
  60.     PWM_Start(PWM0,BIT0);
  61.     */
  62.     while(1)
  63.     {
  64.         /* Configure PC.9 to low */
  65.         PC9  = 1; // PC10 = 0;PC11 = 0;
  66.         /* Delay 200 ms */
  67.         CLK_SysTickDelay( 200-i);

  68.         /* Configure PC.9 to high */
  69.         PC9  = 0;//PC10 = 1; PC11 = 1;
  70.         /* Delay 200 ms */
  71.         CLK_SysTickDelay(i);
  72.         i++;
  73.         if(++i == 200 ) i=0;
  74.     }

  75. }


您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

344

帖子

0

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