完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在视频第二课例子中有用汇编语言点亮一盏LED灯,有用C语言点亮一盏LED灯。
用C语言点亮一盏LED灯需要关看门狗;为啥汇编语言点亮LED灯就不需要关看门狗??????? 两个例子的代码如下: 汇编实现点亮一盏LED灯的代码: @****************************************************************************** @ File:led_on.S @ 功能:LED点灯程序,点亮LED1 @****************************************************************************** .text .global _start _start: LDR R0,=0x56000050 @ R0设为GPFCON寄存器。此寄存器 @ 用于选择端口B各引脚的功能: @ 是输出、是输入、还是其他 MOV R1,#0x00000100 STR R1,[R0] @ 设置GPF4为输出口, 位[8:7]=0b01 LDR R0,=0x56000054 @ R0设为GPBDAT寄存器。此寄存器 @ 用于读/写端口B各引脚的数据 MOV R1,#0x00000000 @ 此值改为0x00000010, @ 可让LED1熄灭 STR R1,[R0] @ GPF4输出0,LED1点亮 MAIN_LOOP: B MAIN_LOOP 用C语言实现点亮一盏LED灯的代码: 启动文件: @****************************************************************************** @ File:crt0.S @ 功能:通过它转入C程序 @****************************************************************************** .text .global _start _start: ldr r0, =0x53000000 @ WATCHDOG寄存器地址 mov r1, #0x0 str r1, [r0] @ 写入0,禁止WATCHDOG,否则CPU会不断重启 ldr sp, =1024*4 @ 设置堆栈,注意:不能大于4k, 因为现在可用的内存只有4K @ nand flash中的代码在复位后会移到内部ram中,此ram只有4K bl main @ 调用C程序中的main函数 halt_loop: b halt_loop main函数: #define GPFCON (*(volatile unsigned long *)0x56000050) #define GPFDAT (*(volatile unsigned long *)0x56000054) int main() { GPFCON = 0x00000100; // 设置GPF4为输出口, 位[9:8]=0b01 GPFDAT = 0x00000000; // GPF4输出0,LED1点亮 return 0; |
|
相关推荐
7个回答
|
|
|
|
|
|
|
|
.S文件的后缀“s”必须大写吗,相关要求规则,哪里有啊?
|
|
|
|
无需大写
|
|
|
|
|
|
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
197个成员聚集在这个小组
加入小组为什么点亮LED的例子放在NORFlash上跑会出现奇怪的现象?
2156 浏览 6 评论
1964 浏览 5 评论
韦东山老师推出的《玩转ARM裸机实战》课程将帮你以上问题一扫而光!
4521 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 12:38 , Processed in 0.744013 second(s), Total 89, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号