高级会员

- 积分
- 581
- 金钱
- 581
- 注册时间
- 2014-11-6
- 在线时间
- 93 小时
|
发表于 2017-1-12 10:19:31
|
显示全部楼层
本帖最后由 一叶扁舟V5 于 2017-1-12 10:20 编辑
“在程序中我使用的升级方式是通过串口发送字符‘1’(可自行修改),串口收到字符‘1’后,向指定的地址写入0xAAAA,然后使用软复位回到bootloader,bootloader中判断那个地址是不是0xAAAA,如果是则升级,升级完成后擦除这个地址的flash内容跳到APP,如果不是则跳直接回到APP执行,由于升级不可能频繁升,所以这里不用担心把falsh擦写坏。” 我遇到的问题是串口接受不到字符‘1’;直接跳转到APP程序;我用的是STM32F10X系列;
void USART1_IRQHandler(void)
{
unsigned char buffer = 0;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
buffer = USART_ReceiveData(USART1);
// buffer =(uint8_t)USART1->DR;
if(buffer=='1')
{
updata_pro = 1;
}
}
}
uint32_t SerialKeyPressed(uint8_t *key) //Serial ′®¿ú
{
if ( USART_GetFlagStatus(USART1, USART_FLAG_RXNE) != RESET) //1
{
// *key = (uint8_t)USART1->DR;
*key = USART_ReceiveData(USART1);//++
return 1;
}
else
{
return 0;
}
} |
|