完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本人在编写串口发送程序(2440向PC机发送一个字符)的时候,如果将需要发送的变量定义成全局变量,则发送不成功,现象是串口助手在接收,但是不显示,(编译是通过的),如下:
unsigned char b; int main(void) { b='a'; while(1) { putc(b); delay(50000); } return 0; } 但是如果将变量定义成局部变量,则发送成功,串口助手正常显示aaaa...,程序如下: int main(void) { unsigned char b='a'; while(1) { putc(b); delay(50000); } return 0; } |
|
相关推荐
1个回答
|
|
我也遇到同样的问题,我已经解决了。
出现这个问题的原因是只使用了前4K的内存,但是链接时全局变量的存放地址超过了4K。 解决方法: 在链接的时候,加入链接地址,强制指定.bss段的地址在4K内。 如下是lds文件内容: SECTIONS { . = 0x00000000; .init : { head.o} .text : { *(.text) } .rodata : {*(.rodata*)} .data : { *(.data) } __bss_start = .; .bss ALIGN(4) : AT(3072) { *(.bss) *(COMMON) } __bss_end = .; } 看到我强制把.bss段指定到了3072这个位置。 这个可以通过反汇编看代码的长度,再调节,如果本身代码比较大的话,还是转到 SDRAM中执行吧。 |
|
|
|
只有小组成员才能发言,加入小组>>
197个成员聚集在这个小组
加入小组为什么点亮LED的例子放在NORFlash上跑会出现奇怪的现象?
2196 浏览 6 评论
1994 浏览 5 评论
韦东山老师推出的《玩转ARM裸机实战》课程将帮你以上问题一扫而光!
4550 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-30 20:40 , Processed in 0.636211 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号