2019独角兽企业重金招聘Python工程师标准>>>

.text
.globl _start
_start:ldr r0, =0x70000000orr r0, r0, #0x13mcr p15, 0, r0, c15, c2, 4ldr r0, =0x7e004000mov r1, #0str r1, [r0]bl clock_initldr sp, =8*1024bl xxxxb .

start.S 文件,调用完时钟初始化函数后调用跑马灯程序。

.globl clock_init
clock_init:ldr r0, =0x7E00F000ldr r1, =0x0000FFFFstr r1, [r0]str r1, [r0, #4]str r1, [r0, #8]#define OTHERS       0x7e00f900ldr r0, =OTHERSldr r1, [r0]bic r1, r1, #0xc0str r1, [r0]loop1:ldr r0, =OTHERSldr r1, [r0]and r1, r1, #0xf00                 cmp r1, #0bne loop1     #define ARM_RATIO    0   /* ARMCLK = DOUTAPLL / (ARM_RATIO + 1)    */
#define HCLKX2_RATIO 1   /* HCLKX2 = HCLKX2IN / (HCLKX2_RATIO + 1) */
#define HCLK_RATIO   1   /* HCLK = HCLKX2 / (HCLK_RATIO + 1)       */
#define PCLK_RATIO   3   /* PCLK   = HCLKX2 / (PCLK_RATIO + 1)     */
#define MPLL_RATIO   0   /* DOUTMPLL = MOUTMPLL / (MPLL_RATIO + 1) */ldr r0, =0x7E00F020  /* CLK_DIV0 */ldr r1, =(ARM_RATIO) | (MPLL_RATIO << 4) | (HCLK_RATIO << 8) | (HCLKX2_RATIO << 9) | (PCLK_RATIO << 12)str r1, [r0]#define APLL_CON_VAL  ((1<<31) | (266 << 16) | (3 << 8) | (1))ldr r0, =0x7E00F00Cldr r1, =APLL_CON_VALstr r1, [r0]/** APLL_CON, FOUTAPL = MDIV * Fin / (PDIV*2^SDIV) = 266*12/(3*2^1) = 532MHz*/#define MPLL_CON_VAL  ((1<<31) | (266 << 16) | (3 << 8) | (1))ldr r0, =0x7E00F010ldr r1, =MPLL_CON_VALstr r1, [r0]/** MPLL_CON, FOUTMPL = MDIV * Fin / (PDIV*2^SDIV) = 266*12/(3*2^1) = 532MHz */ldr r0, =0x7E00F01Cldr r1, =0x03str r1, [r0]mov pc, lr 

clock.S:时钟初始化。

all:start.o clock.o led.oarm-linux-ld -Ttext 0 -o led.elf start.o clock.o led.oarm-linux-objcopy -O binary led.elf led.binarm-linux-objdump -D led.elf > led.discp led.bin /tftpboot/led.bin
%.o:%.Sarm-linux-gcc -c $< -o $@
%.o:%.carm-linux-gcc -c -o $@ $<
clean:rm -rf *.o *.elf *.dis *.bin /tftpboot/*.bin

Makefile:在跑马灯的基础上添加clock.o

void delay ()
{int i;for (i = 0; i < 100000; i++);
}int xxxx (void)
{volatile unsigned long *gpmcon = (volatile unsigned long *)0x7f008820;        volatile unsigned long *gpmdat = (volatile unsigned long *)0x7f008824;int i;for (i = 1; i <= 4; i++){if (1 == i){*gpmcon &= ~0xffff;*gpmcon |= 0x1;}else if (2 == i){*gpmcon &= ~0xffff;*gpmcon |= 0x10;}else if (3 == i){*gpmcon &= ~0xffff;*gpmcon |= 0x100;}else if (4 == i){*gpmcon &= ~0xffff;*gpmcon |= 0x1000;i = 0;}*gpmdat = 0;delay();}return 0;
}

led.c:同上一章一样。

结果:初始化时钟后,跑马灯速度明显快于不初始化时钟的跑马灯程序。

转载于:https://my.oschina.net/u/729328/blog/93823

02 ARM11 时钟初始化后的跑马灯程序相关推荐

  1. arm 跑马灯 linux,02 ARM11 时钟初始化后的跑马灯程序

    .text .globl _start _start: ldr r0, =0x70000000 orr r0, r0, #0x13 mcr p15, 0, r0, c15, c2, 4 ldr r0, ...

  2. 单片机入门学习五 STM32单片机学习二 跑马灯程序衍生出的stm32编程基础

    上篇文章 单片机入门学习四 STM32单片机学习一 跑马灯程序和创建工程 仅介绍了入门程序及其编译运行过程,下面开始对stm32的一些基础知识做一个记录. 1.stm32f103zet6(上篇问题3 ...

  3. ARM上裸奔的跑马灯程序

    今天用优龙ST2410测试了一下在不进系统的情况下裸奔跑马灯程序.首先总结下在ARM板上裸奔程序的几种方法:既然要在ARM上裸奔,首先地让ARM板不进系统,方法是上电复位后选BIOS的最后一项:7 : ...

  4. Proteus仿真STM32F103R6的寄存器版跑马灯程序(存储器宏定义)

    跑马灯程序,存储器映像.用宏定义,增强程序的可读性.. 头文件: #ifndef __STM32F10x_H #define __STM32F10x_H#define PERIPH_BASE (0X4 ...

  5. Proteus仿真STM32F103R6的寄存器版跑马灯程序

    STM32最简单的外设莫过于IO口的高低电平控制了, Proteus仿真STM32F103R6的跑马灯程序. 一.原理图 二.跑马灯C程序 // 粗略延时函数 static void delay(un ...

  6. 第十九节:依次逐个点亮LED之后,再依次逐个熄灭LED的跑马灯程序。

    开场白: 上一节讲了把74HC595驱动程序翻译成类似单片机IO口直接驱动的方式.这节在上一节的驱动程序基础上,开始讲跑马灯程序.我的跑马灯程序看似简单而且重复,其实蕴含着鸿哥的大智慧.它是基于鸿哥的 ...

  7. 基于8255A接口芯片的跑马灯程序

    目前这段时间,微机原理这门课上到了接口部分:开始接触到基于接口芯片的汇编编程,这个星期五上机实验完成后.考虑了一下老师说的跑马灯程序,感觉逻辑上实现不是很复杂 于是去实现了一下,但是没跑起来:于是最后 ...

  8. 写一个ST语言的跑马灯程序

    ST语言的跑马灯程序如下: repeat for i:=1 to 8 do for j:=1 to 8 do if (i=j) then write('*'); else write(' '); en ...

  9. 写一个跑马灯程序并注释

    我可以写一个简单的跑马灯程序,代码如下:// 定义一个字符串,用于显示跑马灯 var str = '你好,世界!';// 定义一个变量,用于表示跑马灯的位置 var pos = 0;// 使用循环,不 ...

最新文章

  1. MongoDB中_class字段的作用
  2. jQuery 2.0.3 源码分析 事件体系结构
  3. 禁止复制的网页怎么复制
  4. java自定义jsp标签_深入浅出javaWeb实战第17讲自定义JSP标签(上)
  5. Java还能热多久?学Java有前途吗?
  6. java利用正则截取字符串中的数字
  7. 使用SpringTask定时获取传感器设备信息并缓存到Redis
  8. pcie ep 应该支持哪种interrupt_7寸国产笔记本评测,酷睿处理器+8G+256G,还支持手写笔...
  9. python输入print跳到documentation-习题 48: 更复杂的用户输入
  10. 2018-2019 20165208 网络对抗 Exp3 免杀原理与实践
  11. [转] Silverlight Navigation(多页面切换、传值)
  12. html消息发送接收,在html页面中 如何应用mqtt协议发送/接收消息
  13. javascript 无法修改 数组中对象_如何使用JavaScript中的Date对象
  14. django 钉钉扫码登录
  15. Bailian2899 Bailian3242 矩阵交换行【矩阵】
  16. LNMP一键安装包+Thinkphp搭建基于pathinfo模式的路由(可以去除url中的.php)
  17. 微服务架构:spring cloud之服务注册和服务发现
  18. 全网首发:怎样制作CDKEY(7)-新思路
  19. 51单片机原理以及接口技术(三)-80C51的指令系统
  20. JS中promise是什么?

热门文章

  1. 计算机 子分数 游戏图形,Windows7下如何开启和关闭系统分级功能.doc
  2. oracle无+密码登陆,Oracle 11g通过wallet实现无密码登录
  3. 2060显卡驱动最新版本_聊一款现阶段性价比爆炸的显卡——铭瑄RTX2070 SUPER 电竞之心 OC...
  4. 程序员能靠技术渡过中年危机吗?
  5. 简述中断处理的6个步骤_微机原理67章答案
  6. union c语言大小,Union declaration(联合体声明)
  7. html对话框跳转页面,html页面的简单对话框(alert, confirm, prompt)
  8. 不同域名指向一个Web站点,ICP证如何设置
  9. 计算机实验报告表九,北理大学计算机实验基础实验九实验报告表-20210617084645.pdf-原创力文档...
  10. 萤火虫pte小程序_【PTE战报】84炸的Maggie,RS试试这样入手开始练习