你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32L476 IAP跳转到APP之后串口无法输出问题求助

[复制链接]
PaulRambo 提问时间:2018-2-11 10:29 /
大家好!我最近在做STM32L476的IAP 功能,目前已经实现从Bootloader到APP的跳转。但是出现的问题是,在Bootloader中使用到了串口1,跳转到APP的时候串口1无法输出,但是外部中断、定时器中断和GPIOB都正常工作。我查了huart1.gState  状态为HAL_UART_ERROR_NONE,告诉我么有错误。
我想请教下哪位大神遇到过类似问题?问题卡在了if(huart->gState == HAL_UART_STATE_READY)
收藏 评论11 发布时间:2018-2-11 10:29

举报

11个回答
废鱼 回答时间:2018-2-11 10:54:41
本帖最后由 安 于 2018-2-11 10:56 编辑

重新初始化串口试一下。看样子像是串口没有初始化。  HAL_UART_STATE_READY             = 0x20U,    /*!< Peripheral Initialized and ready for use Value is allowed for gState and RxState */

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

七哥 回答时间:2018-2-11 11:03:36
首先你的APP程序在没有偏移地址的时候,必须能够单独正常工作。
加上偏移地址重新编译后的程序,才能下载到APP存储区。
中断向量重定向,所有外设重新初始化。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

wolfgang 回答时间:2018-2-11 12:10:37
APP跳转后,中断是否有重新初始化?

评分

参与人数 1蝴蝶豆 +1 收起 理由
zero99 + 1

查看全部评分

PaulRambo 回答时间:2018-2-11 13:54:00
安 发表于 2018-2-11 10:54
重新初始化串口试一下。看样子像是串口没有初始化。  HAL_UART_STATE_READY             = 0x20U,    /*!<  ...

回复:安: 我的串口已经进行过了初始化,APP中的代码如下:
  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_USART1_UART_Init();
  MX_UART4_Init();
、、-------------------------------------------
void MX_USART1_UART_Init(void)
{
HAL_UART_MspDeInit(&huart1);       
  huart1.Instance = USART1;
  huart1.Init.BaudRate = 115200;
  huart1.Init.WordLength = UART_WORDLENGTH_8B;
  huart1.Init.StopBits = UART_STOPBITS_1;
  huart1.Init.Parity = UART_PARITY_NONE;
  huart1.Init.Mode = UART_MODE_TX_RX;
  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
//  huart1.Init.OverSampling = UART_OVERSAMPLING_16;
//  huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
//  huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
       
        HAL_UART_MspInit(&huart1);       
PaulRambo 回答时间:2018-2-11 14:01:13
回复:toofree我的APP能够独立运行,这个可以确定。而且我这里的现象比较奇怪,每次重新烧写一遍APP,都能够运行一次APP,一旦关闭电源,运行一次Bootloader之后,APP就不能再串口输出 了。现象看起来像是Bootloader占用了Uart没有释放。
另外我的偏移地址加上了并且重新编译过了
偏移地址.png
中断向量也已经重新定向:SCB->VTOR = (uint32_t)(0x08080000);
外设初始化与独立运行时相同。
PaulRambo 回答时间:2018-2-11 14:02:34
回复:wolfgang2015  
APP跳转之后,所有外设与中断都重新进行了初始化。
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();
  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_USART1_UART_Init();
  MX_UART4_Init();
  MX_I2C1_Init();
  MX_SPI1_Init();
  MX_TIM2_Init();

//  /* USER CODE BEGIN 2 */
        HAL_TIM_Base_Start_IT(&htim2);
        UartGsmReceieveInit();
废鱼 回答时间:2018-2-11 14:32:58
从huart->gState == HAL_UART_STATE_READY这里分析,应该是串口没有初始化准备好,发生这种情况以后,建议再重新初始化一次试试。再确定一下huart->gState的值是多少。
PaulRambo 回答时间:2018-2-11 15:14:05
安 发表于 2018-2-11 14:32
从huart->gState == HAL_UART_STATE_READY这里分析,应该是串口没有初始化准备好,发生这种情况以后,建议 ...

谢谢你的提醒,我在代码里面直接重复了一句,初始化的就能用了,不清楚原理,但是目前就先这样用,mark一下,以后有时间回来好好研究依一下。       
  MX_USART1_UART_Init();
  MX_UART4_Init();
printf("This is APP\r\n");
PaulRambo 回答时间:2018-2-11 15:20:52
本帖最后由 PaulRambo 于 2018-2-11 15:22 编辑

感谢各位的回复!等我整理好我最近的IAP的资料,我打算开个帖子分享给论坛的各位。下面是我代码的输出,循环在APP与Bootloader之间跳转,能够启动外设串口1、4、Systic、Timer2、LED、IIC等,应该可以说明运行正常了。
AUTO Jump to APP
This is APP
DS3231  Time is 2018/02/11 1W  15:16:32
Soft reset in 3 secs
  3  2  1
This is Bootloader
DS3231  Time is 2018/02/11 1W  15:16:35
GSM is Alive

+CSQ = 23

AUTO Jump to APP
This is APP
DS3231  Time is 2018/02/11 1W  15:16:52
Soft reset in 3 secs
  3  2  1
This is Bootloader
DS3231  Time is 2018/02/11 1W  15:16:55
GSM is Alive



评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2 结帖奖励

查看全部评分

jiangjialin 回答时间:2019-9-4 10:25:55
PaulRambo 发表于 2018-2-11 15:14
谢谢你的提醒,我在代码里面直接重复了一句,初始化的就能用了,不清楚原理,但是目前就先这样用,mark一 ...

我也遇到类似的问题,在初始化前加了中断延时好的,可是不知道原因,你有知道什么原因吗
马铃土豆薯 回答时间:2020-3-27 08:41:25
我也有相似的问题困扰
请问你们是怎么解决的??跪求

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版