开发环境:ADS
调试工具:Jlink
前几天用mdk4.72开发裸机程序,工程设置上遇到点问题,为了不影响学习进度,暂时用ads开发,mdk调通后再写博客说明。
ads安装一路默认即可。
1.工程创建
选择ARM Executable Image
2.添加文件start.s和main.c 添加时注意在add to Project选项上打对勾
3.编辑
start.s内容:
AREA |DATA|,CODE,READONLY
ENTRY
ldr r13, =0x1000
IMPORT
bl main
END
main.c内容
/*
本实验接口说明
GPB5 ------ LED0
GPB6 ------ LED1
GPB8 ------ LED2
GPB10 ------ LED3
GPF0 ------S2
GPF2 ------S3
GPF3 ------S4
GPF4 ------S5按下后为低电平
*/
/*------------------------地址声明---------------------------*/
#define GPBCON (*(volatile unsigned *)0x56000010)
#define GPBDAT (*(volatile unsigned *)0x56000014)
#define GPBUP (*(volatile unsigned *)0x56000018)
#define GPFCON (*(volatile unsigned *)0x56000050)
#define GPFDAT (*(volatile unsigned *)0x56000054)
#define GPFUP (*(volatile unsigned *)0x56000058)
#define uchar unsigned char
#define uint unsigned int
/*-------------------------------------------------------------
函数名称: ledMain
功能描述: 入口程序
初始化后,进入跑马灯死循环
传 参: 无
返 回 值: int 0
-------------------------------------------------------------*/
int main(void)
{
GPBCON = 0x1dd7fc; // GPB5,GPB6,GPB8,GPB10设置为输出
GPBDAT = ((1<<5)|(1<<6)|(1<<8)|(1<<10)); //使LED全灭
GPBUP = 0x00;
GPFCON = 0;
GPFUP = 0;
//GPBDAT = (1<<5)|(1<<6)|(1<<8)|(1<<10);
GPBDAT=0x7ff;
while (1) // 按键控制LED
{
if(!(GPFDAT & 0x01))//GPF0
{
GPBDAT = ~(1<<5);
}
if(!(GPFDAT & 0x04))//GPF2
{
GPBDAT = ~(1<<6);
}
if(!(GPFDAT & 0x08))//GPF3
{
GPBDAT = ~(1<<8);
}
if(!(GPFDAT & 0x10))//GPF4
{
GPBDAT = ~(1<<10);
}
}
return 0;
}
4.工程设置
Edit --DebugRel Setting
Target Setting ---------Post-linker 选择ARM formELF
ARM Assembler-----------Architecture or Processor 选择ARM920T
ARM Linker-----output RO Base 填0x32000000
----------options--------Image enter point填0x32000000
5.编译连接
按F7或project---make
6.AXD 设置
Options----configure target
add 选jlink安装目录下的JLinkRDI.dll
file---load Image 选ADS中生成的*.axf
运行