本帖最后由 357482894 于 2011-11-18 19:37 编辑
拿到板子有一段时间了,总结一下助学板学习初期遇到的问题,请大叔和前辈们指教。
首先,是关于安装开发环境。我电脑上已装有KEIL C51 uVision3,在安装KEIL uVision4 MDK时并没有遇到问题,但在安装Nulink Keil Driver时遇到了问题。如图所示,
实际安装为uVision3 setup,我在下一步选择路径时强制到了Keil4文件夹,不知道这种处理方法是否正确,暂时还没出问题。
安装好开发环境后,本着初生牛犊不怕虎的精神,我将开发板连到了电脑,打开了一个示范例程,然后进行配置。在配置Debug时选择Nulink后,提示更新韧体(firmware),当时并不太明白,直接选择了继续。然后悲剧就出现了,更新无法完成。这时候Nulink的指示灯都不亮了。群里有前辈建议用ICP,我在园地里也找到了ICP更新韧体的办法,但我尝试了好多次,仍然无法完成更新。无奈下我选择了重启电脑,然后继续尝试,这时候奇迹就发生了,ICP很顺利的完成了更新。不知道症结在哪里。
然后,关于程序文件的组织,我是按照Cube所写《菜农M0助学板快速入门指南0.1.2》中的方法,将内核文件、系统文件、启动文件及标准头文件放到CMSIS文件夹,将外设库函数放到BSP_Lib文件夹,将自己的文件放到User文件夹,如下图所示:
在Keil里,文件的目录树如下:
最后,关于工程配置选项,我总结了三个重要的地方:第一个是Target选项卡下的System-Viewer File,路径如下:
这个应该是关于特殊功能寄存器的东西,我不太清楚。然后就是C/C++选项卡下地Include Paths,这个是选择头文件的,因为在工程中引用外设库文件时为了方便直接引用的.c文件,缺少.c文件对应的.h文件,在这项选项中加入包含所有会用到的.h文件的路径即可解决这个问题。第三个就是让我郁闷了很久的问题,User选项卡下的Run#1和Run#2,在园地里看到的指导是带有“\”的一段字符,我开始以为是路径,但是找了好久也没找到路径指向哪里。直到我看了若干次后注意到了三个字“命令行”,对于这个我也不清楚到底是啥意思,但我知道可以复制,然后我粘贴到了Keil里,然后就可以了。
以上是我这段时间遇到的问题总结,还望指教。
最后附上我的一段小程序,按键控制LED,KEY2右移,KEY1左移。
#include <stdio.h>
#include "NUC1xx.h"
#include "DrvGPIO.h"
#include "DrvSYS.h"
void Sys_Init()
{
UNLOCKREG();
SYSCLK->WRCON.XTL12M_EN = 1;//设定12M外部晶振
DrvSYS_Delay(5000);//等待时钟就绪
}
int main (void)
{
int i=2;
Sys_Init();
DrvGPIO_Open(E_GPA,2, E_IO_OUTPUT);
DrvGPIO_Open(E_GPA,3, E_IO_OUTPUT);
DrvGPIO_Open(E_GPA,4, E_IO_OUTPUT);
DrvGPIO_Open(E_GPA,5, E_IO_OUTPUT);
DrvGPIO_Open(E_GPB,14,E_IO_INPUT);
DrvGPIO_Open(E_GPB,14,E_IO_INPUT);
while(1)
{
if(DrvGPIO_GetBit(E_GPB,14)==0|DrvGPIO_GetBit(E_GPB,15)==0)
{
if(DrvGPIO_GetBit(E_GPB,14)==0)
{
DrvSYS_Delay(10000);
if(DrvGPIO_GetBit(E_GPB,14)==1)
{
i++;
DrvGPIO_SetBit(E_GPA,i-1);
if(i>5) i=2;
DrvGPIO_ClrBit(E_GPA,i);
}
}
if(DrvGPIO_GetBit(E_GPB,15)==0)
{
DrvSYS_Delay(10000);
if(DrvGPIO_GetBit(E_GPB,15)==1)
{
i--;
DrvGPIO_SetBit(E_GPA,i+1);
if(i<2) i=5;
DrvGPIO_ClrBit(E_GPA,i);
}
}
}
}
}
|