您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页实验3基于ARM的C语言程序设计

实验3基于ARM的C语言程序设计

来源:意榕旅游网


实验三 基于ARM的C语言程序设计

一、实验目的

了解ARM C语言的基本框架,学会使用ARM的C语言编程。

二、实验设备

标准硬件。

三、实验内容

用C语言编写一个“用通用串口UART发送一组数据”的应用程序。

四、实验原理

(1)汇编程序调用C程序

汇编程序的设置要遵循ATPCS规则,保证程序调用时参数正确传递。

在汇编程序中使用IMPORT伪指令声明将要调用的C程序函数。

在调用C程序时,要正确设置入口参数,然后使用BL调用。

(2)C程序调用汇编程序

在汇编程序中使用EXPORT伪指令声明本子程序,使其他程序可以调用此子程序。

在C语言中使用extern关键字声明外部函数(声明要调用的汇编子程序)。

在C语言环境下开发应用程序,一般需要一个汇编的启动程序,从汇编的启动程序跳转到C语言下的主程序,然后,执行C程序。在C环境下读写硬件的寄存器,一般是通过宏调用,在每个项目文件的Startup2410\\INC目录下都有2410addr.h头文件,里面定义了所有关于2410的硬件寄存器的宏,通过对宏的读写,就能操作2410的硬件。

具体的编程规则同标准C语言。

下面是一个简单的小例子,在汇编中嵌套一个C程序

IMPORT Main;//用IMPORT声明要引入一个C函数Main

AREA Init ,CODE, READONLY;

ENTRY

LDR R0, =0x01d00000

LDR R1, =0x245

STR R1 , [R0] ;把0x245放到地址0X01D00000

BL Main ;跳转到Main()函数

END ;标识汇编程序结束

以上是一个简单的程序,先寄存器初始化,然后跳转到Main()函数标识的C/C++代码处,执行主要任务,此处的 Main是声明的C语言中的Main()函数。

五、实验步骤

1.打开ADS1.2开发环境,打开\\基础实验\\实验六\\C.mcp项目文件,然后进行compile和make生成*.axf文件。

2.编译通过后,进入ADS1.2调试界面,加载\\基础实验\\实验六\\C_Data\\Debug中的映象文件程序映像C.axf。

3.在ADS调试环境下全速运行映象文件,之后,关闭超级终端,打开软件包内的串口调试助手工具,配置为波特率为115200,校验位无,数据位为8,停止位为1。不要选十六进制显示,出现界面。

本程序连续发送55。

下边分析一下主程序的源码。

在C程序前的部分为系统的初始化,这在后边BOOTLOADER的章节里要详细介绍。

#include \"..\\inc\\config.h\" //嵌入包括硬件的头文件

unsigned char data; //定义全局变量

void Main(void)

{

Target_Init(); //目标板初始化,定义串口的硬件初始化在

//target.c中定义

Delay(10); //延时

data = 0x55; //给全局变量赋值

while(1)

{

Uart_Printf(\"%x \串口0输出

Delay(10);

}

}

把data = 0x55;语句中的0x55,换成其他数据,重新编译,下载。

六、心得、体会

C语言的ARM相对来说比较简单,在汇编语言中调用了C语言相关的知识。所以本次实验比较成功,顺利地实现了要求。实验中分析了一下所用到的程序代码,发现主要的语言结构还是C的模式,添加了部分的汇编知识。

没想到C语言除了在控制台之下的编程外,这部分也可以运用得到,之前有点小瞧C了。更深的知识我们没有继续探讨学习,只完成了实验要求。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务