2024-11-18 10:09:39 +08:00
|
|
|
|
/*
|
|
|
|
|
* user_main.c
|
|
|
|
|
*
|
|
|
|
|
* Created on: Sep 24, 2024
|
|
|
|
|
* Author: 10425
|
|
|
|
|
*/
|
|
|
|
|
#include "user.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void user_main()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
uint8_t APP_flag = *(uint8_t*)app_flag;
|
|
|
|
|
if(APP_flag == 0xFF)
|
|
|
|
|
{
|
|
|
|
|
uint8_t parameters[18];
|
|
|
|
|
memset(parameters,0xFF,sizeof(parameters));
|
|
|
|
|
AT24C16_WriteBytes(0, parameters, sizeof(parameters));
|
|
|
|
|
uint64_t a = 0;
|
|
|
|
|
write_code(app_flag, (uint8_t*)&a, 8);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
user_init();
|
|
|
|
|
uint8_t aa[2] = {0};
|
|
|
|
|
HAL_StatusTypeDef status;
|
|
|
|
|
status=AT24C16_ReadBytes(FILE_SIZE_ADDR, aa, sizeof(aa));
|
|
|
|
|
while(status != HAL_OK)
|
|
|
|
|
{
|
|
|
|
|
status=AT24C16_ReadBytes(FILE_SIZE_ADDR, aa, sizeof(aa));
|
|
|
|
|
}
|
|
|
|
|
uint16_t file_size = aa[0]<<8 | aa[1];
|
|
|
|
|
if(file_size ==0 || file_size == 0xFFFF)
|
|
|
|
|
{
|
|
|
|
|
if(( ( *(volatile uint32_t*)app2_addr )&0x2FFE0000 )==0x20000000)//检查栈顶地址是否合法.
|
|
|
|
|
{
|
|
|
|
|
if(( *(volatile uint32_t*)(app2_addr+4) )>app2_addr)
|
|
|
|
|
{
|
|
|
|
|
//关闭中断
|
|
|
|
|
__disable_irq();
|
|
|
|
|
HAL_ADC_Stop_DMA(&hadc1); //关闭adc,不关闭无法正常跳转
|
|
|
|
|
|
|
|
|
|
//跳转
|
|
|
|
|
SCB->VTOR = app2_addr;
|
|
|
|
|
LoadApp loadapp;
|
|
|
|
|
loadapp=(LoadApp)( *(volatile uint32_t*)(app2_addr+4) ); //用户代码区第二个字为程序开始地址(复位地址)
|
|
|
|
|
__set_MSP(*(volatile uint32_t*)app2_addr); //初始化MSP
|
|
|
|
|
|
|
|
|
|
loadapp();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2024-12-30 15:29:57 +08:00
|
|
|
|
bsp_StartAutoTimer(0,100);
|
2024-11-18 10:09:39 +08:00
|
|
|
|
while(1)
|
|
|
|
|
{
|
|
|
|
|
if(bsp_CheckTimer(0))
|
|
|
|
|
{
|
2024-12-30 15:29:57 +08:00
|
|
|
|
HAL_IWDG_Refresh(&hiwdg); //喂狗
|
2024-11-18 10:09:39 +08:00
|
|
|
|
HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
|
|
|
|
|
HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);
|
|
|
|
|
HAL_GPIO_TogglePin(LED3_GPIO_Port, LED3_Pin);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(usart_count >0)
|
|
|
|
|
{
|
|
|
|
|
Usart_Receive();
|
|
|
|
|
usart_count = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|