解决stm32 IAP程序跳转后串口不能发送的问题

本文介绍了在STM32上实现IAP功能后遇到的问题,即使用Keil编译的IAP程序和gcc-arm-none-eabi交叉编译的APP程序结合时,串口无法正常发送。解决方案是在APP程序的串口初始化前先进行DeInit,恢复串口到默认状态,然后重新初始化,确保串口设置不受IAP程序影响,最终成功解决问题。
摘要由CSDN通过智能技术生成

解决stm32 IAP程序跳转后串口不能发送的问题

问题描述

在stm32上实现了IAP功能,当IAP程序与APP程序都使用Keil编译工具进行编译链接时,APP程序能够正常工作。但是IAP程序使用Keil编译,APP程序使用gcc-arm-none-eabi交叉编译工具链进行编译时,下载下去后GPIO能正常工作,但是串口发送时总是卡在这一句:

void USART3_putchar(char data)
{
    while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET);	//卡在这里
    USART_SendData(USART3, (uint16_t)data);
}

解决办法

在APP串口初始化开始前先DeInit一次,将串口恢复到默认的状态,然后再进行初始化。不管IAP程序对串口做了什么设置,都不会影响到APP的设置。

void USART3_Configuration( unsigned int BaudRate)
{
    GPIO_InitTypeDef 	GPIO_InitStructure;
    USART_InitTypeDef 	USART_InitStructure;
	USART_ClockInitTypeDef USART_ClockInitStructure;  
	
	USART_DeInit(USART3);	//在这里增加
 
    // USART3
    GPIO_InitStructure.GPIO_Pin 			= GPIO_Pin_10;		// USART3 TX
    GPIO_InitStructure.GPIO_Mode 			= GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed 			= GPIO_Speed_50MHz;
 
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值