完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
先给出一段代码:
#include #include "uart.h" void main() { char []str="abcdef"; Uartinit(); while(1) { rintString(str); Delayms(500); } } 这样,这个测试程序可以一直通过串口打印字符串“abcdef”。 问题1:定义的char []str字符数组占用了单片机的RAM,是否同时占用单片机的Flash程序空间? 问题2:如果在字符数组定义时加上“code”关键词,即定义成 char code []str ="abcdef";是不是只占用单片机的Flash程序空间? 请各位大神指教,先谢谢了。。 -------------------------------------------------------------------------------------------------------- 如果说 char []str ="abcdef"定义后只占用RAM;char code []str="abcdef";定义后只占用Flash, 那为什么char []str ="abcdef"这样定义的程序编译下载到单片机后能打印出“abcdef”呢,断电后重启也能打印出来,这个字符不是保存在RAM空间么?很疑惑。 |
|
相关推荐
5个回答
|
|
abcdef,肯定是存放在flash里面了.
只是你同时又将这个字符串赋值给了数组str. 等于说单片机内部有这么一个操作: 实际存储: code str1x="abcdef" 运行到main函数时: char str[]=str1x; |
|
|
|
|
|
|
|
谢谢这位朋友的解答。我的疑问点还有一个:就是说这个程序编译后生成HEX,下载到单片机,定义的char str[]="abcdef";是存在于所分配的RAM空间,而不会占用Flash空间,那我让单片机断电重启,串口还是能打印“abcdef”这样的字符串,那这个要怎么解释呢?主要是这一点我很迷糊
|
|
|
|
谢谢原子哥,你这么解释我终于明白了。
|
|
|
|
我让你帮我点个外卖,最终外卖在我的桌子上,我让你买外卖这句话在你的微信聊天记录里,就是这个意思
|
|
|
|
只有小组成员才能发言,加入小组>>
3311 浏览 9 评论
2994 浏览 16 评论
3493 浏览 1 评论
9058 浏览 16 评论
4087 浏览 18 评论
1176浏览 3评论
604浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
598浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2334浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1895浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 20:00 , Processed in 1.392189 second(s), Total 88, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号