打印
[应用方案]

新唐 Nuvoton NUC029 入门 点亮板载LED

[复制链接]
1012|36
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
官网地址


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


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

Document 文档

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

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

使用特权

评论回复
板凳
梅花香自123|  楼主 | 2021-5-25 14:35 | 只看该作者
然后放上一张图片,也就是买来的板子的样子

使用特权

评论回复
地板
梅花香自123|  楼主 | 2021-5-25 14:37 | 只看该作者
然后说项目创建,NUC029xDEBSP_CMSIS_v3.00.002\SampleCode\Template 模板目录下可以复制一份直接打开用

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

使用特权

评论回复
5
梅花香自123|  楼主 | 2021-5-25 14:38 | 只看该作者

使用特权

评论回复
6
梅花香自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)

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

使用特权

评论回复
7
梅花香自123|  楼主 | 2021-5-26 22:20 | 只看该作者
正文

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

使用特权

评论回复
8
梅花香自123|  楼主 | 2021-5-26 22:22 | 只看该作者
http://www.nuvoton.com.cn/export/resource-files/UM_NuTiny-SDK-NUC029SDE_EN_Rev1.00.pdf

使用特权

评论回复
9
梅花香自123|  楼主 | 2021-5-26 22:26 | 只看该作者
最后可以看到PCB和相关的介绍 LED灯接的是芯片的 PB13

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

使用特权

评论回复
10
梅花香自123|  楼主 | 2021-5-26 22:29 | 只看该作者
所以点亮LED我们就需要让PB13变成低电平,这样电流经过电阻和LED再到PB13就让LED亮了,PB13高电平时候相当于LED两端电压相同,不会有电流通过...灯灭

使用特权

评论回复
11
梅花香自123|  楼主 | 2021-5-26 22:31 | 只看该作者
#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);
    }
}

使用特权

评论回复
12
梅花香自123|  楼主 | 2021-5-26 22:35 | 只看该作者

使用特权

评论回复
13
梅花香自123|  楼主 | 2021-5-26 22:38 | 只看该作者
对于点亮LED我们需要的主要是 gpio.c clk.c sys.c

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

使用特权

评论回复
14
梅花香自123|  楼主 | 2021-5-26 22:39 | 只看该作者

使用特权

评论回复
15
梅花香自123|  楼主 | 2021-5-26 22:43 | 只看该作者
都折腾完了就build代码,编译完了看最下面控制台,只要没有error就可以download代码到芯片了

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

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

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

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

使用特权

评论回复
16
梅花香自123|  楼主 | 2021-5-26 22:45 | 只看该作者
后面找时间再写 NuMaker-ML51PC 也就是 新唐8051点亮LED的代码。51的比M0要简单多了 

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

使用特权

评论回复
17
東南博士| | 2021-5-27 07:18 | 只看该作者
NUVOTON 绿色的开发板不多见啊!

使用特权

评论回复
18
gygp| | 2021-6-4 12:35 | 只看该作者
新一代针对工业控制设计的微控制器产品,具备高可靠性和高抗干扰能力。

使用特权

评论回复
19
chenci2013| | 2021-6-4 12:37 | 只看该作者
NuMicro家族NUC029系列技术参考手册  

使用特权

评论回复
20
biechedan| | 2021-6-4 12:37 | 只看该作者
哪种单片机的性价比高?  

使用特权

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

本版积分规则

80

主题

1035

帖子

0

粉丝