完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
程序非常的简单,就是先定义一个数组初始化了其中的12x5个,然后让lcd显示第1行,第4列的数字(小数点后两位),程序如下
#include <STM32f10x_lib.h> #include "sys.h" #include "usart.h" #include "delay.h" #include "lcd.h" int main(void) { float propertiestot[12][5]= {{1 , 22064000, 647.1400, 0.34437, 18.0150}, {2 , 3399000, 126.2600, 0.03593, 28.0000}, {3 , 7386000, 304.2100, 0.22394, 44.0100}, {4 , 4599000, 190.5500, 0.01140, 16.0430}, {5 , 4872000, 305.3300, 0.09909, 30.0700}, {6 , 4246000, 369.8500, 0.15611, 44.0970}, {7 , 3640000, 407.8500, 0.18465, 00.0000}, {8 , 3784000, 425.1400, 0.19777, 58.1240}, {9 , 3196000, 433.7500, 0.19528, 00.0000}, {10, 3370000, 460.3900, 0.22606, 00.0000}, {11, 3364000, 469.6900, 0.24983, 00.0000}, {12, 3020000, 507.8500, 0.29600, 00.0000}}; Stm32_Clock_Init(9);//系统时钟设置 delay_init(72); //延时初始化 uart_init(72,9600); //串口1初始化 LCD_Init(); OINT_COLOR=RED; while(1) { if(propertiestot[0][3]<0) {LCD_ShowString(100,150,"-");} else {LCD_ShowString(100,150,"+");} LCD_ShowNum(110,150,abs(propertiestot[0][3]),2,18); LCD_ShowString(130,150,"."); LCD_ShowNum(138,150,(abs(10*propertiestot[0][3]))%10,1,18); LCD_ShowNum(146,150,(abs(100*propertiestot[0][3]))%10,1,18); delay_ms(10000); } } 然后调试 Program Size: Code=9496 RO-data=3208 RW-data=16 ZI-data=608 显示结果为:0.34 没有问题 现在其他的都不变将这个数组的大小改为12x9,即只将上述程序中的 float propertiestot[12][5]改为float propertiestot[12][9] 然后调试 Program Size: Code=9496 RO-data=3400 RW-data=16 ZI-data=608 显示结果为:0.34 也没有问题 然后做法同上,将这个数组大小改为12x10, 即只将上述程序中的 float propertiestot[12][9]改为float propertiestot[12][10] 然后调试 Program Size: Code=9496 RO-data=3448 RW-data=16 ZI-data=608 结果显示为白屏,没有任何数字 同样的将数组大小改为12x11也显示为白屏 同样的将数组大小改为12x12这时候连白屏也不显示了直接黑屏。 (注意以上改动在keil 4软件中编译均没有问题) 用库函数版本的keil---keil 4在线调试,一步步的运行,运行几步之后就出现一下问题: *** error 65: access violation at 0x1FFFFFFC : no 'write' permission 我想问问原子哥,这是为什么呢,以为内存不够的原因么? 怎么解决。 |
|
相关推荐
5个回答
|
|
在单片机里面定义这么大的常量数组,无异于自杀.
随着你数组容量的增大,死的就越来越快了.最后直接就死了. 看看别人的帖子:http://www.openedv.com/posts/list/189.htm?fromAll=0 |
|
|
|
那就是单片机中不能进行这么大的数组的运算是吧,那可以通过使用内部闪存来解决么?因为我看你的最后一个综合实验也有非常大的数据,Program Size: Code=65962 RO-data=7158 RW-data=1040 ZI-data=15792 都比我的那个大。不知道可不可以?
|
|
|
|
|
|
|
|
SRAM和FLASH区别我知道个大概,SRAM就是静态随即存储器,和我们平时所说的内存差不多吧,FLASH应该就是类似于硬盘一样的存储介质吧。你说的没错可以将大数组定义在FLASH里面而不占用SRAM,我也正是这么想的,我还有点不太明白的是,当程序读取FLASH当中的数据时那么这些数据不是都在SRAM里了此时SRAM空间又不够用了?
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1618 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1545 浏览 1 评论
979 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1597 浏览 2 评论
1864浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
645浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
516浏览 3评论
532浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
505浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 23:50 , Processed in 0.991736 second(s), Total 86, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号