完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我用的是STM8S207 用的是stvd+cosmic编译环境 ,想对一个变量"value"持续计数,掉电存储一次内部EEPROM,上电判断上电标志(一管脚通过电阻给电容充电,上电时开始为0V,过一会充满电为VCC),上电标志0则读出EEPROM数据,为1则为看门狗热复位不读EEPROM,变量value仍保持原数据继续计数。
我没有初始化但编译器复位的时候就给初始化成0了; 例如:unsigned char value; 则看门狗复位后读出的数据为0了,我得到了错误的结果0。 我期望得到的是:看门狗热复位 value不清0,然后一判断上电标志位1就不需读EEPROM,这样可以按原来热复位之前的内存数据持续计数了。 大家有没有让编译器不给我这个未初始化的变量初始化成0的办法啊。谢谢! |
|
相关推荐
1个回答
|
|
要在STM8S207上使用STVD+Cosmic编译器实现您的需求,您需要遵循以下步骤:
1. 首先,您需要将变量`value`存储在非易失性存储器(如内部EEPROM)中。这样,在掉电后,变量的值仍然可以保留。 2. 在程序开始时,您需要检查上电标志。如果上电标志为0,说明是正常上电,此时需要从EEPROM读取`value`变量的值。如果上电标志为1,说明是看门狗复位,此时不需要从EEPROM读取`value`变量的值。 3. 为了避免编译器在复位时将`value`变量初始化为0,您可以使用`__no_init`属性。这将告诉编译器不要为该变量分配初始化空间,从而避免在复位时将其初始化为0。 以下是实现上述步骤的示例代码: ```c #include #include __no_init unsigned char value; // 使用__no_init属性避免初始化为0 void eeprom_read_value(void) { // 从EEPROM读取value变量的值 eeprom_read(&value, sizeof(value)); } void eeprom_write_value(void) { // 将value变量的值写入EEPROM eeprom_write(&value, sizeof(value)); } void main(void) { unsigned char up_flag = GPIO_ReadInputPin(PA, PA_IN1); // 读取上电标志 if (up_flag == 0) { eeprom_read_value(); // 正常上电,从EEPROM读取value变量的值 } // 执行其他程序逻辑,更新value变量的值 if (up_flag == 0) { eeprom_write_value(); // 正常上电,将value变量的值写入EEPROM } while (1) { // 持续计数,更新value变量的值 // ... // 根据需要将value变量的值写入EEPROM eeprom_write_value(); } } ``` 请注意,您需要根据您的硬件设计和EEPROM库实现`eeprom_read()`和`eeprom_write()`函数。此外,确保在程序中定期将`value`变量的值写入EEPROM,以防止在掉电时丢失数据。 通过以上步骤,您应该可以实现在STM8S207上使用STVD+Cosmic编译器对`value`变量进行持续计数,同时在掉电后能够从EEPROM中恢复变量的值。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1752 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1611 浏览 1 评论
1052 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
721 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1666 浏览 2 评论
1926浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
711浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
560浏览 3评论
583浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
544浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 18:31 , Processed in 0.764847 second(s), Total 48, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号