#include "stm32f10x.h"
#define BOOTLOADER_ADDRESS 0x08000000 // Bootloader的起始地址
#define APP_ADDRESS 0x08080000 // 用户程序的起始地址
void SystemInit(void);
void USART_Config(void);
void Flash_Unlock(void);
void Flash_ProgramHalfWord(uint32_t Address, uint16_t Data);
int main(void)
{
SystemInit();
USART_Config();
Flash_Unlock(); // 进入Bootloader模式,等待接收数据
uint8_t buffer[256];
uint16_t length = 0;
uint32_t address = APP_ADDRESS;
while (1)
{
// 从串口接收数据
uint8_t data = USART_ReceiveData(USART1); // 处理接收到的数据,例如检查数据包头、计算校验和等 // ... // 将数据写入闪存
if (length < sizeof(buffer))
{ buffer[length++] = data; }
else {
for (uint16_t i = 0; i < length; i += 2)
{ Flash_ProgramHalfWord(address, (buffer[i] << 8) | buffer[i + 1]); address &#