[单片机]你的程序到底有多大?
之前遇到一个问题,老师让我给程序里多加一个功能,我改好之后给单片机下载程序,这时候显示文件大小超出范围,超出部分已被自动截取。
我看了一下编译生成的Hex文件 47KB
然后打开说明书,找到单片机的型号STC15F2K16S2,看了一下他的EEPROM,嗯45KB所以放不下。
然后我把添加的功能去掉,再看一眼,我去原来就是46KB,为啥能下进去呀?
管他呢,于是我给老师说:老师单片机只能下45K的程序,加上功能后47K下不了,去掉功能呢是46K勉强能下进去(嗯,勉强能下进去,很强势,所以程序可以硬塞进去是吧,你以为是公交车?)
直到今天,老师问我你有空没?我跟你说个事。
你上次跟我说程序下不进去,是因为HEX文件超过45K了,我打电话给STC的工程师了,他说跟哪个没关系,不要看HEX的大小,要看BIN的大小,这就是KEIL里这个code=16412,应为咱们的单片机Flash是16K==16384B,所以只要这个code超过16384就下不进去了
不加功能code=16357,所以能下,不是你说的勉强能塞进去,程序这东西,一点也不能勉强。
确实自从本科上完单片机课后,我就再没有试图去了解单片机,虽然一直会用一些单片机,但那仅仅是会用的入门水平,连熟练都谈不上。这也是我一直以来都有的坏习惯,感兴趣的东西可以迅速掌握到会用水平,之后缺乏深入研究的耐心,然后逐渐失去兴趣。貌似什么都了解一些,却没一样能算的上精通。反思之后我i立刻去查资料还是很有收获的。
程序下载哪里?(ROM-flash)
ROM是只读存储器,CPU只能从里面读数据,而不能往里面写数据,掉电后数据依然保存在存储器中;RAM是随机存储器,CPU既可以从里面读出数据,又可以往里面写入数据,掉电后数据不保存。因为程序掉电后还在所有只能放在ROM里
RAM和ROM
ROM
程序经过编译、汇编、链接后,生成hex文件。