当前位置: 首页 > news >正文

老狼请客高清免费观看mx网站排名优化+o+m

老狼请客高清免费观看mx,网站排名优化+o+m,网站注册平台,织梦 图片网站一、C语言工程简介 把模板在linux解压出来 代码写在interface.c就可以了。 map.lds是链接脚本文件#xff08;负责代码的排布#xff09; include中是头文件#xff0c;src中是写好的源代码 start.s是启动代码#xff0c;在interface.c之前运行#xff0c;把cpu和栈做一…一、C语言工程简介 把模板在linux解压出来 代码写在interface.c就可以了。 map.lds是链接脚本文件负责代码的排布 include中是头文件src中是写好的源代码  start.s是启动代码在interface.c之前运行把cpu和栈做一个初始化 二、启动代码分析 .text .global _start _start:/** Vector table * 异常向量表占32个字节*/ b resetb .b .b .b .b .b .b .reset:/** Set vector address in CP15 VBAR register*/ ldr r0, _start 把异常向量表的值给r0mcr p15, 0, r0, c12, c0, 0 Set VBAR 把r0寄存器的值放到p15协处理器中的c12寄存器/** Set the cpu to SVC32 mode, Disable FIQ/IRQ* 把cpu模式改成SVC模式改成ARM状态关闭FIQ/IRQ中断*/ mrs r0, cpsrbic r0, r0, #0x1forr r0, r0, #0xd3msr cpsr ,r0/** Defines access permissions for each coprocessor*/ mov r0, #0xfffffffmcr p15, 0, r0, c1, c0, 2 /** Invalidate L1 I/D */mov r0, #0 Set up for MCRmcr p15, 0, r0, c8, c7, 0 Invalidate TLBsmcr p15, 0, r0, c7, c5, 0 Invalidate icache/** Set the FPEXC EN bit to enable the FPU*/ mov r3, #0x40000000fmxr FPEXC, r3/** Disable MMU stuff and caches* MMU负责物理地址和虚拟地址间的转换*/mrc p15, 0, r0, c1, c0, 0bic r0, r0, #0x00002000 Clear bits 13 (--V-)bic r0, r0, #0x00000007 Clear bits 2:0 (-CAM)orr r0, r0, #0x00001000 Set bit 12 (---I) Icacheorr r0, r0, #0x00000002 Set bit 1 (--A-) Alignorr r0, r0, #0x00000800 Set bit 11 (Z---) BTBmcr p15, 0, r0, c1, c0, 0/** Initialize stacks * 初始化栈 */ init_stack: /*svc mode stack*/msr cpsr, #0xd3 把cpu的模式改为svc模式ldr sp, _stack_svc_end 把svc模式下的栈的最高地址给了svc模式下的sp/*undef mode stack*/msr cpsr, #0xdb ldr sp, _stack_und_end/*abort mode stack*/ msr cpsr,#0xd7ldr sp,_stack_abt_end/*irq mode stack*/ msr cpsr,#0xd2ldr sp, _stack_irq_end/*fiq mode stack*/msr cpsr,#0xd1ldr sp, _stack_fiq_end/*user mode stack, enable FIQ/IRQ*//*把cpu的模式改为user模式并打开FIO/IRQ中断msr cpsr,#0x10ldr sp, _stack_usr_end/*Call main*/b main/** 把各个栈最高的地址算出来作为起始地址*/ _stack_svc_end: .word stack_svc 512 _stack_und_end: .word stack_und 512 _stack_abt_end: .word stack_abt 512 _stack_irq_end: .word stack_irq 512 _stack_fiq_end:.word stack_fiq 512 _stack_usr_end: .word stack_usr 512/** 给各个模式都申请了512个字节空间作为栈*/ .data stack_svc: .space 512 stack_und:.space 512 stack_abt: .space 512 stack_irq: .space 512 stack_fiq: .space 512 stack_usr: .space 512三、C语言实现LED实验 /** 一、汇编语言访问存储器* 1.读存储器* LDR R1, [R2]* 2.写存储器* STR R1, [R2]** 二、C语言访问存储器* 1.读存储器* data *ADDR* 2.写存储器* *ADDR data* */void Delay(unsigned int Time) {while(Time--); }int main() {/*通过设置GPX2CON寄存器来将GPX2_7引脚设置成输出功能*/*(unsigned int *)0x11000c40 0x10000000;while(1){/*点亮LED2*/*(unsigned int *)0x11000c44 0x00000080;/*延时*/Delay(1000000);/*熄灭LED2*/*(unsigned int *)0x11000c44 0x00000000;/*延时*/Delay(1000000);}return 0; }四、寄存器的封装方式 1、把单个的寄存器封装成一个宏 #define GPX2CON (*(unsigned int *)0x11000c40) #define GPX2DAT (*(unsigned int *)0x11000c44)int main() {GPX2CON 0x10000000;while(1){/*点亮LED2*/GPX2DAT 0x00000080;/*延时*/Delay(1000000);/*熄灭LED2*/GPX2DAT 0x00000000;/*延时*/Delay(1000000);}return 0; } 2、把相关的几个寄存器封装成一个结构体其地址空间必须是连续的 typedef struct {unsigned int CON;unsigned int DAT;unsigned int PUD;unsigned int DRV; }gpx2;#define GPX2 (*(gpx2 *)0x11000c40)int main() {GPX2.CON 0x10000000;while(1){/*点亮LED2*/GPX2.DAT 0x00000080;/*延时*/Delay(1000000);/*熄灭LED2*/GPX2.DAT 0x00000000;/*延时*/Delay(1000000);}return 0; } 3、把整个芯片里的寄存器封装好引用头文件 #include exynos_4412.hint main() {GPX2.CON 0x10000000;while(1){/*点亮LED2*/GPX2.DAT 0x00000080;/*延时*/Delay(1000000);/*熄灭LED2*/GPX2.DAT 0x00000000;/*延时*/Delay(1000000);}return 0; } 五、寄存器操作的标准化 只改寄存器的某几位其他位保持不变 #include exynos_4412.hint main() {GPX2.CON GPX2.CON (~(0xF 28)) | (0x1 28);while(1){/*点亮LED2*/GPX2.DAT GPX2.DAT | (1 7);/*延时*/Delay(1000000);/*熄灭LED2*/GPX2.DAT GPX2.DAT (~(1 7));/*延时*/Delay(1000000);}return 0; }/** 1.unsigned int a; 将a的第3位置1其他位保持不变* ******** ******** ******** ********* ******** ******** ******** ****1**** 00000000 00000000 00000000 00001000** a a | (1 3);** 2.unsigned int a; 将a的第3位置0其他位保持不变* ******** ******** ******** ********* ******** ******** ******** ****0**** 11111111 11111111 11111111 11110111** a a (~(1 3));** 3.unsigned int a; 将a的第[7:4]位置为0101其他位保持不变* ******** ******** ******** ********* ******** ******** ******** 0101****** 1).先清零* 11111111 11111111 11111111 00001111* 00000000 00000000 00000000 11110000* 00000000 00000000 00000000 00001111** a a (~(0xF 4));** 2).再置位* 00000000 00000000 00000000 01010000* 00000000 00000000 00000000 00000101** a a | (0x5 4);** a a (~(0xF 4)) | (0x5 4);*/ 我没并不只能控制LED一切可以通过高低电频控制的东西都可以通过GPIO来控制。
http://www.pierceye.com/news/176293/

相关文章:

  • 小米wifi设置网址入口网站通信工程建设网站
  • 深圳专业网站建在线做插画的网站
  • 站长之家网站查询怎么样创建自己的小程序
  • 站酷海报设计图片网站备份怎么做
  • 做网站挣钱么云市场 wordpress
  • 网站域名管理规范seo专员是什么
  • 网站制作+资讯网站特色栏目重要性
  • 网站qq 微信分享怎么做的随州市住房和城乡建设部网站
  • 资源网站建设多少钱手机网站页面文字做多大
  • 烟台专业做网站宜昌教育云网站建设
  • 慕课联盟网站开发实战wordpress怎样修改域名
  • 什么电脑做网站前段用旅游网站建设的利益
  • 做 暧视频在线观看网站花都网站建设设计
  • 黄石企业网站设计服务外包有哪些
  • 团队合作网站网站制作的报价大约是多少
  • 网站在线留言系统能挣钱的平台 正规的
  • 冀州网站制作泉州握旗公司网站建设
  • 免费php企业网站苏州网站建设多少钱
  • 重庆网站制作设计抚州网站建设
  • 国外psd网页模板网站免费学校网站管理系统
  • 网站开发合作合同范本电子商务营销渠道有哪些
  • 云南网站建设哪个好沈阳视频制作公司
  • 可以做公众号的一些网站企业级网站开发需求分析
  • 建设网站收费标准品牌网络推广公司排名
  • 网站怎么做动态背景图片营销型网站建设的优势有哪些
  • 专业网站制作软件网页设计五个页面
  • 个人网站的成本球形网架结构厂家
  • 顺德网站制作案例价位php做视频网站源码
  • 网站优化 无需定金公明网站制作
  • 安徽龙山建设网站wordpress 禁止twitter