- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使用CW新建工程目录后产生以下三个部分: (1)工程配置文件夹 包含与调试相关的配置文件、链接文件以及启动代码文件,对于一般的开发过程不需要改动。 (2)工程输出文件夹 包含源码工程经过编译链接之后生成的文件,其中.elf文件或.hex文件为生成的程序机器码文件,可下载到目标板上运行。 (3)源程序文件夹 包含通用函数、驱动构件文件、主程序文件以及中断服务例程文件等,这些文件是工程开发人员进行编程的主要对象。 一、CW10.3开发环境下工程文件组织框架 4.5 工程文件组织框架与第一个C语言工程分析 工程 文件 编译、连接 目标代码文件(.elf) Intel HEX文件(.hex) 存储器分配文件(.map) CW生成的文件 一、CW10.3开发环境下工程文件组织框架 芯片上电启动后,首先查询保存在Flash存储区首端的中断向量表,取出第一个表项的内容设定为堆栈初始化指针,取出第二个表项的内容作为启动函数(startup)的入口地址。 二、上电执行过程 4.5 工程文件组织框架与第一个C语言工程分析 三、链接文件分析 4.5 工程文件组织框架与第一个C语言工程分析 三、链接文件分析 4.6 第一个汇编语言工程:控制小灯闪烁 相对于C语言编程,汇编在编程的直观性、编程效率、以及可读性等方面都有所欠缺,但掌握基本的汇编语言编程方法是嵌入式学习的基本功。 汇编工程通常包含芯片相关的程序框架文件、软件构件文件、工程设置文件、主程序文件及抽象构件文件等。 汇编工程类似C工程,仍然按构件方式进行组织。 汇编工程仅包含一个汇编主程序文件(main.s)。 汇编程序的主体要尽可能简洁,程序中的其余功能应尽量由子程序去完成,主程序主要完成对子程序的循环调用。 第4章 第一个样例程序及工程组织 一、汇编工程文件的组织 汇编主程序文件main.s,包含: (1)工程描述 (2)总头文件 (3)主程序 (4)内部直接调用子程序 (5)外部子程序 4.6 第一个汇编语言工程:控制小灯闪烁 二、Light构件汇编程序(light.s) Light构件用于控制指示灯的亮或暗,包括小灯初始化程序light_init( )、控制小灯亮暗程序light_control ( )以及切换小灯亮暗程序light_change ( ) 。 在include.s中,包含各个构件的汇编文件。 三、Light测试工程主程序(main.s) 在include.s文件中需要包含light.s,这样在该工程中就可以调用light构件的接口函数。 首先调用light_Init函数,初始化所需的指示灯(每盏灯初始状态为“暗”)。然后通过light_control函数控制指示灯亮、暗。通过变量的递增并且设置频率后,就能够在程序运行中,可以比较明显的看到指示灯对应的小灯进行闪烁的现象。 4.6 第一个汇编语言工程:控制小灯闪烁 四、汇编工程执行过程 1)当KL25芯片内电复位或热复位后,系统程序的执行流程如下:从复位向量处取出程序执行的首地址,跳转并按该地址执行;执行__arm_start.c文件中的__thumb_startup函数,进行系统的初始化。 2)在系统带电的状态下,硬件中断机制始终开启,并实时地“监听”内外环境而恰当地激发特定的事务处理过程。具体过程如下: 首先系统在加电过后,芯片内的硬件机制会产生加电复位中断,这时系统到向量表中查找复位向量地址,并转向这个地址继续执行。 其次执行main.asm文件中的_Startup函数,对堆栈指针进行初始化,以及芯片及所用到的模块进行初始化。 最后当某个中断发生后,MCU将转到中断向量表文件isr.asm所指定的中断入口地址处开始执行中断服务程序。 4.6 第一个汇编语言工程:控制小灯闪烁 * * * * * 2.举例 设PORTB口的19脚接一个发光二极管,低电平点亮。 (1)设置PORTB口的19引脚为GPIO功能 volatile uint_32 *portB_ptr = (uint_32*)0x4004A000u; volatile uint_32 *portB_PCR_19 = portB_ptr + 19; *portB_PCR_19 = 0 (2)设置PORTB口的19引脚为输出功能 volatile uint_32 *gpioB_ptr = (uint_32*)0x400FF040u; volatile uint_32 *portB_PDDR = gpioB_ptr + 5; *portB_PDDR |= (119); 三、GPIO基本编程步骤
文档评论(0)