从杂志上看到介绍新唐M051单片机的一篇文章,说M051是8位机的价格32位机的性能。从网上一查,一片M0516LBN仅售7元左右跟一片8位单片机价格差不多的。而且功能比单片机还多速度还快。于是从网上买了个Nu-Link 仿真器(用于往M051里烧写程序)和M0516LBN转51的开发板,就是把贴片的转换成直插模式并且引脚的排列顺序跟51单片机一样,据说如果你会51单片机,用这个开发板学习M051是很容易入门的。过了几天设备到手,迫不及待先试试。
首先安装编程环境,我用的是MDK5.0。MDK可以跟C51装到同一个目录,这样既可以写C51的程序也可以写M051程序了。
第二步去新唐的官网下载 Nu-Link Driver for Keil RVMDK V1.24.6211.zip 仿真器的驱动,并安装好。
第三部下载M051 SeriesBSP_CMSIS_V2.01.002.zip 和 M051 SeriesBSP_DirectRegisterAccess_EN_V1.01.003.zip,这两个是M051的库文件。据说用CMSIS库就像ARM M3的编程方式差不多(我没用过M3),DirectRegisterAccess库是直接操作寄存器跟51单片机的编程方式差不多。问了问高手,他们建议用CMSIS,因为更简单方便。我两个都装上了。这两个文件直接解压C盘即可,路径要记住,要在mdk里面填写。
打开MDK,新建一个项目,取名TEST,然后出现下图,点OK。
出现选择CPU对话框,找到M0516LBN,点OK.
然后下面对话框点yes。
然后就进入MDK的主界面了。再新建一个空文档,并保存,取名为main.c
在Source Group 1上点右键选择Add Existing Files to Group ,把main.c加进来。
点击工具栏上的 这个图标。做如下设置。
下图的include paths里面写上刚才解压的 M051 SeriesBSP_CMSIS_V2.01.002.zip的路径。我写的是:
C:\Keil\M051SeriesBSP_CMSIS_v2.01.002\M051SeriesBSP_CMSIS_v2.01.002\LibM051Series\CMSIS\CM0\DeviceSupport\Nuvoton\M051Series;C:\Keil\M051SeriesBSP_CMSIS_v2.01.002\M051SeriesBSP_CMSIS_v2.01.002\LibM051Series\StdDriver\inc
下图在scatter file里写:--map --first='startup_M051Series.o(RESET)' --datacompressor=off --info=inline --entry Reset_Handler
选择Nuvoton Nu-Link Debugger,然后点Settings按钮。
然后在main.c里输入以下代码
#include< M051Series.h>
void SystemInit(void)
{}
int main(void)
{
//设置P2.0为强推挽输出
_GPIO_SET_PIN_MODE(P2, 0, GPIO_PMD_OUTPUT);
while(1)
{
//让P2.0交替输出高低电平。把LED灯的正极接到P2.0负极接地,LED就会一闪一闪的。
P20 = 1;
SYS_SysTickDelay(500000);
P20 = 0;
SYS_SysTickDelay(500000);
}
}
然后按Ctrl+F5就可以单步调试程序了。如果你没有设置断点的话,这时候LED就会一闪一闪的。
如果不想调试,想直接把程序烧入芯片做如下设置。
然后再点工具栏上的按钮。
首先安装编程环境,我用的是MDK5.0。MDK可以跟C51装到同一个目录,这样既可以写C51的程序也可以写M051程序了。
第二步去新唐的官网下载 Nu-Link Driver for Keil RVMDK V1.24.6211.zip 仿真器的驱动,并安装好。
第三部下载M051 SeriesBSP_CMSIS_V2.01.002.zip 和 M051 SeriesBSP_DirectRegisterAccess_EN_V1.01.003.zip,这两个是M051的库文件。据说用CMSIS库就像ARM M3的编程方式差不多(我没用过M3),DirectRegisterAccess库是直接操作寄存器跟51单片机的编程方式差不多。问了问高手,他们建议用CMSIS,因为更简单方便。我两个都装上了。这两个文件直接解压C盘即可,路径要记住,要在mdk里面填写。
打开MDK,新建一个项目,取名TEST,然后出现下图,点OK。
出现选择CPU对话框,找到M0516LBN,点OK.
然后下面对话框点yes。
然后就进入MDK的主界面了。再新建一个空文档,并保存,取名为main.c
在Source Group 1上点右键选择Add Existing Files to Group ,把main.c加进来。
点击工具栏上的 这个图标。做如下设置。
下图的include paths里面写上刚才解压的 M051 SeriesBSP_CMSIS_V2.01.002.zip的路径。我写的是:
C:\Keil\M051SeriesBSP_CMSIS_v2.01.002\M051SeriesBSP_CMSIS_v2.01.002\LibM051Series\CMSIS\CM0\DeviceSupport\Nuvoton\M051Series;C:\Keil\M051SeriesBSP_CMSIS_v2.01.002\M051SeriesBSP_CMSIS_v2.01.002\LibM051Series\StdDriver\inc
下图在scatter file里写:--map --first='startup_M051Series.o(RESET)' --datacompressor=off --info=inline --entry Reset_Handler
选择Nuvoton Nu-Link Debugger,然后点Settings按钮。
然后在main.c里输入以下代码
#include< M051Series.h>
void SystemInit(void)
{}
int main(void)
{
//设置P2.0为强推挽输出
_GPIO_SET_PIN_MODE(P2, 0, GPIO_PMD_OUTPUT);
while(1)
{
//让P2.0交替输出高低电平。把LED灯的正极接到P2.0负极接地,LED就会一闪一闪的。
P20 = 1;
SYS_SysTickDelay(500000);
P20 = 0;
SYS_SysTickDelay(500000);
}
}
然后按Ctrl+F5就可以单步调试程序了。如果你没有设置断点的话,这时候LED就会一闪一闪的。
如果不想调试,想直接把程序烧入芯片做如下设置。
然后再点工具栏上的按钮。
相关帖子
- • 【分享】电子技术书籍合集
- • STC15单片机+DS3231+DS18B20+DHT11+OLED12864+ESP8266_01S组成网络时间 有待改善
- • 基于单片机的自行车里程表程序 大写N到底是什么性质的变量 在哪里声明
- • proteus仿真时[SPICE] Too many iterations without converge...怎么处理?求指点
- • 可以用单片机制作320*96大规模的点阵吗?
- • 有人能帮我解释下这个单片机公交车自动报站红外模块的原理吗?
- • STC8A8A8K单片机+蓝牙+电机控制+遥控灯--资料和PCB程序源码
- • c语言定时器T0方式2控制led点亮时间1s 仿真led闪得很快
- • stm32按键点灯仿真无反应 求帮助
- • stm32跑马灯仿真错误 求帮助