timmyboys 2016-11-11 05:11 采纳率: 0%
浏览 1502
已结题

关于STM32的IAP升级中TIM意外被关闭

我在使用STM32的IAP升级,一开始用官方的demo修改之后可以正常的使用串口进行升级,但是公司的产品中必须要加一个外设,SP706TEN当没有及时输入电平反转(1.6S内)到WDI引脚,外设将产生低电平给STM的NRST,产生复位。
问题就出现在这里。
图片说明

  如图,SP706TEN的结构如上,我在原有代码的基础上增加了一个定时器TIM3,在TIM3中每0.5秒使WDI电平反转来给(SP706TEN)喂狗。

程序一开始运行都是OK的,当进入了下载界面,程序就跑飞到HardFault_Handler故障中去了,我猜想的原因是因为TIM3没有及时喂狗导致产生了复位,内存溢出或访问越界吧。但是不清楚为什么。
下载的代码跟官方demo一样,如下

 /*******************************************************************************
  * @函数名称    SerialKeyPressed
  * @函数说明   测试超级终端是否有按键按下
  * @输入参数   key:按键
  * @输出参数   无
  * @返回参数   1:正确
                0:错误
*******************************************************************************/
uint32_t SerialKeyPressed(uint8_t *key)
{

    if ( USART_GetFlagStatus(USART2, USART_FLAG_RXNE) != RESET)
    {
        *key = (uint8_t)USART2->DR;
        return 1;
    }
    else
    {
        return 0;
    }
}


/*******************************************************************************
  * @函数名称    Receive_Byte
  * @函数说明   从发送端接收一个字节
  * @输入参数   c: 接收字符
                timeout: 超时时间
  * @输出参数   无
  * @返回参数   接收的结果
                0:成功接收
                1:时间超时
*******************************************************************************/
static  int32_t Receive_Byte (uint8_t *c, uint32_t timeout)
{
    while (timeout-- > 0)
    {
        if (SerialKeyPressed(c) == 1)
        {
            return 0;
        }
    }
    return -1;
}

接收文件是用while(1)不停检测usart标志位来接收数据,并不会干扰TIM3的中断发生,但是为什么程序一进行到下载界面就崩掉了????
注:
1.当进入下载界面选择的时候输入过1,2,几个单独的按键,也通过上面的代码接收,TIM3都没有死掉,但是下载接收(连续)就死掉了
2.如外设的原理图,JUMP2不插跳线帽的时候是不会产生硬件中断的,因此我一开始没加TIM3的程序所有功能都是OK的。但是公司要求升级的时候不能拆盖(也就是说跳线帽是插上的),因此1.6S内不使WDI电平反转(达到喂狗效果),就会产生复位,也就是加定时器的时候出的错。

自己找了好久都没有思路与方法,还请大家帮忙分析一下,是什么原因,如何有效的去解决。谢谢!

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2016-11-12 14:36
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条