1_ARM开发环境.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1_ARM开发环境.ppt

降低原材料成本 本文反映结束! 谢谢大家 观看! 同步糖化发酵工艺 ,能耗下降30% * * * * * * * * * * RVDS在线调试 RVDS上集成的ADX在线调试功能需要用到JLINK仿真器,通过JTAG接口与CPU 连接实现硬件仿真:在线调试在以后课程中介绍 课程安排 ARM技术与发展 ARM开发工具RVDS 使用RVDS开发LED灯驱动 LED灯驱动程序 硬件接口原理图: 1、LED与GPIO连接: 参考《主板原理图Tiny6410-1107.pdf》 LED1~LED4对应的GPK4~GPK7 引脚 LED灯驱动程序 硬件控制原理: 2、当某一管脚(nLed1-nLed4)置低:电路接地,跟3.3v电源之间有压差,Led电路被导通,电流流经Led发光二极管使其点亮。 3、当某一管脚(nLed1-nLed4)置高:电路被切断,Led发光二极管被熄灭 。 4、因此,驱动程序只要将GPIO管脚设置为输出,对某个GPIO管脚置低、置高,就会控发光二极管的点亮和熄灭。 LED灯驱动程序 硬件接口资源: 5、LED占用GPIO接口资源 6、接口控制器 参考《s3c6410用户手册》第10章GPIO LED灯驱动实现 驱动程序实现: 7、驱动程序源码 LED灯驱动程序实现 8、编译程序 9、下载到开发板并运行 tftp 6410.bin go 观察开发板LED1状态! C语言驱动硬件 1、寄存器定义解析 //GPK控制寄存器 #define rGPKCON0 (*(volatile unsigned long*)(0x7F008800)) 2、从上述定义中,请思考,如下问题 为什么要用无符号长整型unsigned long的数字? volatile表示什么含意? 宏定义的最前面*表示什么含意? C语言驱动硬件 3、为什么要用无符号长整型unsigned long 定义硬件寄存器地址 硬件寄存器为32位 最高位也是有效位而不是符号位 C语言驱动硬件 4、 volatile表示什么含意? volatile关键字是一种类型修饰符,用它声明的类型变量是易变的。表示可以被某些编译器未知的因素更改,比如操作系统、硬件或者其它线程等。 遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。 当要求使用volatile 声明的变量的值时,系统总是重新从它所在的内存(而不是通用寄存器)存取数据,即使它前面的指令刚刚从该处存取过数据。 如果一个变量没有volatile,编译器会自动进行优化,数据未被显式改变时尽量从通用寄存器存取,提高访问效率 C语言驱动硬件 5、 Volatile的应用场合 存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义,如并行设备的硬件寄存器(如:状态寄存器) 中断服务程序中修改的供其它程序检测的全局变量需要加volatile,如一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) 多任务环境下各任务间共享的数据,如多线程应用中被几个任务共享的变量 C语言驱动硬件 6、宏定义的最前面*表示什么含意? 表示指针指向地址(硬件寄存器)上的内容 类似于 char *p=a; *p=’A 这是一个硬件寄存器常量地址 可以取对应地址的内容 : data = rGPKCON0 或者给这个地址赋值: rGPKCON0 = data C语言驱动硬件 7、硬件寄存器操作 (1)、位清0 最低位清0 rGPKCON0 = ~0x1 ;//把最低位清0,其余位不变 第3位(最低位为第0位)清0 rRTCCON = ~(0x1 3); //把第3位清0,其余位不变 第3-5 位清0 rRTCCON = ~(0x7 3);//把第3-5位清0,其余位不变 C语言驱动硬件 7、硬件寄存器操作 (2)、位置1 最低位置1 rGPKCON0 |= 0x1 ;//把最低位置1,其余位不变 第3位(最低位为第0位)置1 rRTCCON |= (0x1 3); //把第3位置1,其余位不变 第3-5 位置1 rRTCCON |= (0x7 3);//把第3-5位置1,其余位不变 C语言驱动硬件 7、硬件寄存器操作 (4)、设置连续位值 第3-5 设置为6 rRTCCON = ~(0x7 3);//先把第4-6位清0 rRTCCON |= (0x6 3);

文档评论(0)

明若晓溪 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档