欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > stm32实现出厂设置和恢复出厂设置

stm32实现出厂设置和恢复出厂设置

2026/2/14 15:50:12 来源:https://blog.csdn.net/QiongJiShengBian/article/details/144584467  浏览:    关键词:stm32实现出厂设置和恢复出厂设置

所有变量保存在 ADDR_FLASH_RxCanBuff 这个 FLASH 地址上面
启动时 从 ADDR_FLASH_RxCanBuff 读取输出存到 MBuff 变量
将 各种变量指向 MBuff 的成员
判断 Initial 为 0xFF 时就初始化变量并保存
这样只需要控制 Initial 就能 实现初始化出厂配置

//掉电缓存扇区
//#define ADDR_FLASH_SECTOR_7_BANK1     ((uint32_t)0x080E0000) //扇区0起始地址, 128 Kbytes 7
#define ADDR_FLASH_RxCanBuff ADDR_FLASH_SECTOR_7_BANK1			//保存数据的起始位//缓存长度
#define MBuffLen 1024
//缓存变量
static uint8_t MBuff[MBuffLen] = {0};//将变量指针指向 MBuff变量的成员
static uint8_t *Initial = (uint8_t*)&MBuff[0];				//	0	出厂设置标志 0xFF就要执行初始化
static uint32_t *Filter_ID1 = (uint32_t*)&MBuff[1];			//	1-4	设置can1接收id范围 默认0xA2
static uint32_t *Filter_ID2 = (uint32_t*)&MBuff[5];			//	5-8	设置can1接收id范围 默认0xA2
static uint32_t *CanMasterId = (uint32_t*)&MBuff[9];		//	9-12	设置运动卡id 默认是 0x32/******************
读配置到MBuff变量
当 Initial 为 0xFF 时恢复出厂配置
*/
static void RxSetUp(void){//变量 FLASH地址 长度memcpy(MBuff, (void *)ADDR_FLASH_RxCanBuff, MBuffLen);			//从FLASH读数据到变量if(*Initial == 0xFF){debug("初始化出厂设置\n");//配置出厂设置*Initial = 1;//*Filter_ID1 = 0xA2;*Filter_ID2 = 0xA2;*CanMasterId = 0x32;Erase_X(7);														//檫除扇区 第7个//参数 变量 FLASH起始位置 长度F_Write(MBuff, (uint32_t)ADDR_FLASH_RxCanBuff, MBuffLen);		//保存数据  参数 变量 FLASH起始位置 长度}}/*
任务入口
*/
static void app(void *pvParameters) {debug("app\n");debug("请注意 变量使用的是小端!!!\n");RxSetUp();//读配置BatAdd(Callio);										//注册io回调CallBatAddCan1(CallRxCan1);							//注册回调fdcan1.rx_Filter_Init(*Filter_ID1,*Filter_ID2);  	// 初始化FDCAN1滤波器 当前设备接收消息的id范围fdcan1.start();           							// 启动FDCAN1 fdcan1.rx_Interrupt_Init(); 						// 打开FDCAN1的接收中断 debug("配置****************\n");debug("Filter_ID1: 0x%08X\n", *Filter_ID1);debug("Filter_ID2: 0x%08X\n", *Filter_ID2);debug("CanMasterId: 0x%08X\n", *CanMasterId);debugH(MBuff,15);while (1) { 							vTaskDelay(5 / portTICK_PERIOD_MS);  //延迟}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词