新唐 Nuvoton NUC029 入门 点亮板载LED

官网地址

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

 

对BSP稍微说下里面的东西,解压缩后看到3个文件夹和一个pdf

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

Document 文档

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

SampleCode开发的demo代码,对于会的人这些也许有用,对于不会的,这就是天书(他不认识我,我不认识他)

然后放上一张图片,也就是买来的板子的样子

然后说项目创建,NUC029xDEBSP_CMSIS_v3.00.002\SampleCode\Template 模板目录下可以复制一份直接打开用

主要用到的是keil文件夹和main.c,复制 Template 改为 Template_led (这样的目的在于保持了原有依赖地址可用,又不破坏原有文件)

这里主要用到的依赖文件有

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)

上面图片的目录结构并不是真实文件存放的目录,只是标识要用这些文件,人为的创建文件夹进行分类

 

正文

看板子的LED灯位置,前面板子的图,左边芯片的左边有2个小白块,也就是2个LED灯,绿色和红色,接usb通电后绿灯常亮(这个是电源指示灯),旁边的LED灯默认是灭的,旁边白字写着POWER 还有 GPIO1,这里我们就不清楚GPIO1是接在芯片那个端口了,上大杀器。。。文档PDF

http://www.nuvoton.com.cn/export/resource-files/UM_NuTiny-SDK-NUC029SDE_EN_Rev1.00.pdf

最后可以看到PCB和相关的介绍 LED灯接的是芯片的 PB13

按照电路设计一般都使用上拉电阻方式连接LED,说人话就是电源接电阻和LED然后再接到PB13的芯片脚上。

所以点亮LED我们就需要让PB13变成低电平,这样电流经过电阻和LED再到PB13就让LED亮了,PB13高电平时候相当于LED两端电压相同,不会有电流通过...灯灭

#include <stdio.h>
#include "NUC029xDE.h"

#define PLL_CLOCK   50000000


void SYS_Init(void)
{
    /*---------------------------------------------------------------------------------------------------------*/
    /* Init System Clock                                                                                       */
    /*---------------------------------------------------------------------------------------------------------*/

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

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

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

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

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

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

}

static void delay_ms(uint16_t nDelay)
{
    uint16_t nIndex;
    for(nIndex = 0; nIndex < nDelay; nIndex++)
    {
        CLK_SysTickDelay(1000);//delay one ms
    }
}
/*---------------------------------------------------------------------------------------------------------*/
/* MAIN function                                                                                           */
/*---------------------------------------------------------------------------------------------------------*/
int main(void)
{
    /* Unlock protected registers */
    SYS_UnlockReg();

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

    /* Lock protected registers */
    SYS_LockReg();

    GPIO_SetMode(PB,BIT13,GPIO_PMD_OUTPUT);
    while(1){
      PB13 = 1;
      delay_ms(1000);
      PB13 = 0;
      delay_ms(1000);
    }
}

对于点亮LED我们需要的主要是 gpio.c clk.c sys.c

看名字 gpio管脚定义,clk主要是定时延时,sys就是系统函数调用

都折腾完了就build代码,编译完了看最下面控制台,只要没有error就可以download代码到芯片了

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

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

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

https://www.cnblogs.com/zhugeanran/p/9229505.html

 

后面找时间再写 NuMaker-ML51PC 也就是 新唐8051点亮LED的代码。51的比M0要简单多了 

最后感叹下,新唐的门槛太高了,没有点基础想玩起来太难了,虽然网上经常有1折买开发板的活动,但是很多人买了之后只能吃灰,因为很多人都是图新鲜,但发现买完了以后无从下手直接就丢一边了。

学生才是市场的新鲜血液,与其低价漫无目的的推广还不如用心在入门文章和视频上多花点时间和精力。。。只有会用,才可能有人用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值