[应用方案] 新唐 Nuvoton NUC029 入门 点亮板载LED

[复制链接]
1950|36
 楼主| 梅花香自123 发表于 2021-5-25 14:25 | 显示全部楼层 |阅读模式
官网地址


http://www.nuvoton.com.cn/products/microcontrollers/arm-cortex-m0-mcus/nuc029-series/nuc029sde/

需要用到的软件地址

http://www.nuvoton.com.cn/products/microcontrollers/arm-cortex-m0-mcus/nuc029-series/nuc029sde/?group=Software&tab=2

下载实例代码(BSP)NUC029xDE_Series_BSP_CMSIS_v3_00_002

如果你是从0接触的新唐,那么从新唐还需要下载 ICP及驱动,其他工具什么的暂时用不到

开发环境使用的是 Keil 5 (keil官网下载版本是 5.30 大约800M),如果你还要做51开发,那就先安装51再安装ARM版的Keil

 楼主| 梅花香自123 发表于 2021-5-25 14:28 | 显示全部楼层
对BSP稍微说下里面的东西,解压缩后看到3个文件夹和一个pdf

520060ac9882cd705.png
pdf描述了3个文件夹具体功能,啰嗦的说 :

Document 文档

Library是我们开发需要用到的依赖库文件

SampleCode开发的demo代码,对于会的人这些也许有用,对于不会的,这就是天书(他不认识我,我不认识他)
 楼主| 梅花香自123 发表于 2021-5-25 14:35 | 显示全部楼层
然后放上一张图片,也就是买来的板子的样子

2315660ac9a23d7685.png
 楼主| 梅花香自123 发表于 2021-5-25 14:37 | 显示全部楼层
然后说项目创建,NUC029xDEBSP_CMSIS_v3.00.002\SampleCode\Template 模板目录下可以复制一份直接打开用

主要用到的是keil文件夹和main.c,复制 Template 改为 Template_led (这样的目的在于保持了原有依赖地址可用,又不破坏原有文件)
 楼主| 梅花香自123 发表于 2021-5-25 14:38 | 显示全部楼层
 楼主| 梅花香自123 发表于 2021-5-25 14:41 | 显示全部楼层
这里主要用到的依赖文件有

NUC029xDEBSP_CMSIS_v3.00.002\Library\Device\Nuvoton\NUC029xDE\Source\system_NUC029xDE.c

NUC029xDEBSP_CMSIS_v3.00.002\Library\Device\Nuvoton\NUC029xDE\Source\ARM\startup_NUC029xDE.s

NUC029xDEBSP_CMSIS_v3.00.002\Library\StdDriver\src\clk.c 等需要用到的文件(按上图可见retarget.c uart.c sys.c clk.c)

上面图片的目录结构并不是真实文件存放的目录,只是标识要用这些文件,人为的创建文件夹进行分类
 楼主| 梅花香自123 发表于 2021-5-26 22:20 | 显示全部楼层
正文

看板子的LED灯位置,前面板子的图,左边芯片的左边有2个小白块,也就是2个LED灯,绿色和红色,接usb通电后绿灯常亮(这个是电源指示灯),旁边的LED灯默认是灭的,旁边白字写着POWER 还有 GPIO1,这里我们就不清楚GPIO1是接在芯片那个端口了,上大杀器。。。文档PDF
 楼主| 梅花香自123 发表于 2021-5-26 22:22 | 显示全部楼层
http://www.nuvoton.com.cn/export/resource-files/UM_NuTiny-SDK-NUC029SDE_EN_Rev1.00.pdf
 楼主| 梅花香自123 发表于 2021-5-26 22:26 | 显示全部楼层
最后可以看到PCB和相关的介绍 LED灯接的是芯片的 PB13

按照电路设计一般都使用上拉电阻方式连接LED,说人话就是电源接电阻和LED然后再接到PB13的芯片脚上。
 楼主| 梅花香自123 发表于 2021-5-26 22:29 | 显示全部楼层
所以点亮LED我们就需要让PB13变成低电平,这样电流经过电阻和LED再到PB13就让LED亮了,PB13高电平时候相当于LED两端电压相同,不会有电流通过...灯灭
 楼主| 梅花香自123 发表于 2021-5-26 22:31 | 显示全部楼层
  1. #include <stdio.h>
  2. #include "NUC029xDE.h"

  3. #define PLL_CLOCK   50000000


  4. void SYS_Init(void)
  5. {
  6.     /*---------------------------------------------------------------------------------------------------------*/
  7.     /* Init System Clock                                                                                       */
  8.     /*---------------------------------------------------------------------------------------------------------*/

  9.     /* Enable Internal RC 22.1184MHz clock */
  10.     CLK_EnableXtalRC(CLK_PWRCON_OSC22M_EN_Msk);

  11.     /* Waiting for Internal RC clock ready */
  12.     CLK_WaitClockReady(CLK_CLKSTATUS_OSC22M_STB_Msk);

  13.     /* Switch HCLK clock source to Internal RC and HCLK source divide 1 */
  14.     CLK_SetHCLK(CLK_CLKSEL0_HCLK_S_HIRC, CLK_CLKDIV_HCLK(1));

  15.     /* Enable external XTAL 12MHz clock */
  16.     CLK_EnableXtalRC(CLK_PWRCON_XTL12M_EN_Msk);

  17.     /* Waiting for external XTAL clock ready */
  18.     CLK_WaitClockReady(CLK_CLKSTATUS_XTL12M_STB_Msk);

  19.     /* Set core clock as PLL_CLOCK from PLL */
  20.     CLK_SetCoreClock(PLL_CLOCK);

  21. }

  22. static void delay_ms(uint16_t nDelay)
  23. {
  24.     uint16_t nIndex;
  25.     for(nIndex = 0; nIndex < nDelay; nIndex++)
  26.     {
  27.         CLK_SysTickDelay(1000);//delay one ms
  28.     }
  29. }
  30. /*---------------------------------------------------------------------------------------------------------*/
  31. /* MAIN function                                                                                           */
  32. /*---------------------------------------------------------------------------------------------------------*/
  33. int main(void)
  34. {
  35.     /* Unlock protected registers */
  36.     SYS_UnlockReg();

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

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

  41.     GPIO_SetMode(PB,BIT13,GPIO_PMD_OUTPUT);
  42.     while(1){
  43.       PB13 = 1;
  44.       delay_ms(1000);
  45.       PB13 = 0;
  46.       delay_ms(1000);
  47.     }
  48. }
 楼主| 梅花香自123 发表于 2021-5-26 22:35 | 显示全部楼层
 楼主| 梅花香自123 发表于 2021-5-26 22:38 | 显示全部楼层
对于点亮LED我们需要的主要是 gpio.c clk.c sys.c

看名字 gpio管脚定义,clk主要是定时延时,sys就是系统函数调用
 楼主| 梅花香自123 发表于 2021-5-26 22:39 | 显示全部楼层
 楼主| 梅花香自123 发表于 2021-5-26 22:43 | 显示全部楼层
都折腾完了就build代码,编译完了看最下面控制台,只要没有error就可以download代码到芯片了

然后就看到1秒亮1秒灭了~ 

如果有错误那就修改配置,上面图片options for target

关于keil配置的事儿,百度或者看我搜到的这篇**

https://www.cnblogs.com/zhugeanran/p/9229505.html
 楼主| 梅花香自123 发表于 2021-5-26 22:45 | 显示全部楼层
后面找时间再写 NuMaker-ML51PC 也就是 新唐8051点亮LED的代码。51的比M0要简单多了 

最后感叹下,新唐的门槛太高了,没有点基础想玩起来太难了,虽然网上经常有1折买开发板的活动,但是很多人买了之后只能吃灰,因为很多人都是图新鲜,但发现买完了以后无从下手直接就丢一边了。
東南博士 发表于 2021-5-27 07:18 | 显示全部楼层
NUVOTON 绿色的开发板不多见啊!
gygp 发表于 2021-6-4 12:35 | 显示全部楼层
新一代针对工业控制设计的微控制器产品,具备高可靠性和高抗干扰能力。
chenci2013 发表于 2021-6-4 12:37 | 显示全部楼层
NuMicro家族NUC029系列技术参考手册  
biechedan 发表于 2021-6-4 12:37 | 显示全部楼层
哪种单片机的性价比高?  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

102

主题

1216

帖子

0

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