完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
今天又来试下老师的leds程序,效果是移动点亮led1 2 3 。
makefile、程序也没咋个改,就是重新编译了一次。 uboot :tftp 30400000 leds.bin ;go 30400000 编译工具用的CD1里面的CD1toolsARM-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2 我做起来LED3闪烁很快,LED1 2 常亮 。wait从30000改到30000000 ,怎么改效果都不变 问题在哪里呢?编译工具吗? _________________________________ leds.c: void wait(volatile unsigned long dly) { for(; dly > 0; dly--); } int main(void) { unsigned long i = 0; GPFCON = GPF4_out|GPF5_out|GPF6_out; // 将LED1-3对应的GPF4/5/6三个引脚设为输出 while(1){ wait(30000000); wait(30000000); wait(30000000); wait(30000000); wait(30000000); wait(30000000); wait(30000000); GPFDAT = (~(i<<4)); // 根据i的值,点亮LED1-3 if(++i == 8) i = 0; } return 0; } //LED3闪烁很快,LED1 2 常亮 。wait从30000改到30000000 ,怎么改效果都不变 // uboot :tftp 30400000 leds.bin ;go 30400000 _________________________________ leds.lds: SECTIONS { . = 0x30400000; .text : { *(.text) } .rodata ALIGN(4) : {*(.rodata)} .data ALIGN(4) : { *(.data) } .bss ALIGN(4) : { *(.bss) *(COMMON) } } |
|
相关推荐
4个回答
|
|
不错,这个程序请注意while循环内关于点亮灯的那段GPFDAT赋值语句,那个i的值初始为0,配合下面的if语句内的,建议你手动把每一次循环写下来,看看每次到底亮几个灯,亮哪个灯,和你wait多长时间没关系,不关wait的事,造成灯闪烁不规律的原因在于GPFDAT赋值语句和i的值。或者直接在论坛里裸机板块搜索点灯关键字,记得以前看到过有人写过详细的过程
|
|
|
|
这里有个因为烧进norflash而造成失败的例子,可惜不适合我现在的情况。我是使用bootloader下载到ram中运行的。
http://www.100ask.org/bbs/forum. ... hlight=%B5%E3%B5%C6 |
|
|
|
|
|
|
|
另外 crt0.S 的注释写错,还原。
|
|
|
|
只有小组成员才能发言,加入小组>>
197个成员聚集在这个小组
加入小组为什么点亮LED的例子放在NORFlash上跑会出现奇怪的现象?
2184 浏览 6 评论
1985 浏览 5 评论
韦东山老师推出的《玩转ARM裸机实战》课程将帮你以上问题一扫而光!
4543 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 19:45 , Processed in 0.609891 second(s), Total 54, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号