跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1M系列
  4. UART发送过程中直接进入到HARDFAULT错误

UART发送过程中直接进入到HARDFAULT错误

已定时 已固定 已锁定 已移动 YTM32B1M系列
15 帖子 5 发布者 296 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • D 在线
    D 在线
    Diga
    编写于30天之前 最后由 编辑
    #2

    看一下 hardfault 原因是什么
    看起来像溢出了

    G 1 条回复 最后回复 30天之前
    0
    • G 离线
      G 离线
      guangnan
      回复了Diga 30天之前 最后由 编辑
      #3

      Diga 你好,我这边暂时没有头绪查出hardfault原因,因为是直接跳转进去的,尝试过把堆栈加大,而且传输结束后都会清除buf里面的数据。能请教一下怎么查看这个原因吗?

      1 条回复 最后回复
      0
      • D 在线
        D 在线
        Diga
        编写于30天之前 最后由 编辑
        #4

        IAR 应该是有个可以查看 hardfault 原因的,另外可以看一下 Core 的寄存器,SCB->SHCSR

        G 1 条回复 最后回复 29天之前
        0
        • G 离线
          G 离线
          guangnan
          回复了Diga 29天之前 最后由 编辑
          #5

          Diga 附上CPU和Core寄存器的情况0a72ff13-2a37-4ded-8bb9-70a662c0dee5-image.png 35de8e08-41a5-44e0-b132-df3b7b814b98-image.png dd029bbb-2439-44f2-9b04-88ee522776bf-image.png

          1 条回复 最后回复
          0
          • D 在线
            D 在线
            Diga
            编写于29天之前 最后由 编辑
            #6

            初步看是 bus fault,bus fault 的错误地址是 0x20010000
            看起来像是你的 tx buff 这个指针在野蛮生长,已经超出 RAM 范围了

            G 1 条回复 最后回复 29天之前
            0
            • G 离线
              G 离线
              guangnan
              回复了Diga 29天之前 最后由 guangnan 编辑 28天之前
              #7

              Diga 我这边查看的linflexd_uart_config1_State的txBuff确实是越界了,但是重复几次现象也没有看到这个txbuff在疯狂变化,直接就从正常指针地址跳到 0x20010000。进错误之前传进去的数据还是正常的。这边检查了有操作linflexd_uart_config1_State.txBuff的也只有这个发送回调函数。
              b1d58fb9-d1b8-4717-95fc-ffc83858eb97-image.png 1c3702c2-290b-4c49-9d0b-837f6c10350c-image.png

              1 条回复 最后回复
              0
              • D 在线
                D 在线
                Diga
                编写于29天之前 最后由 编辑
                #8

                看起来像 state->txBuff 指向的是一个局部变量,位置应该是在栈内,然后这个位置被你的代码冲掉了
                你可以把你的 txDataAddr 拿出来当全局变量,固定占一个坑

                G X 2 条回复 最后回复 29天之前
                0
                • G 离线
                  G 离线
                  guangnan
                  回复了Diga 29天之前 最后由 guangnan 编辑 28天之前
                  #9

                  Diga 刚刚尝试了把这个txDataAddr 修改为全局变量还是会出错。

                  1 条回复 最后回复
                  0
                  • H 离线
                    H 离线
                    Harlan
                    编写于28天之前 最后由 编辑
                    #10

                    Debug排查到,主函数与中断都有调用“LINFlexD_UART_DRV_PutData()”函数,存在函数重进入的情况;机缘巧合下txsize会自减2次,如果txsize是1,则会自减为0xffffffff(0D4,294,967,295),最终导致txbuff爆掉,进入Hardfault。

                    image.png
                    image.png

                    解决方法:①避免中断和主函数都调用同一个函数,②通过其他方式做好逻辑管理。

                    1 条回复 最后回复
                    3
                    • X 离线
                      X 离线
                      Xgq
                      编写于24天之前 最后由 编辑
                      #11

                      请问一下串口的DMA发送怎么配置?

                      1 条回复 最后回复
                      0
                      • X 离线
                        X 离线
                        Xgq
                        回复了Diga 23天之前 最后由 编辑
                        #12

                        Diga 你好,方便指导一下MC0的串口DMA配置吗?DMA初始化有点迷糊

                        1 条回复 最后回复
                        0
                        • Q 离线
                          Q 离线
                          qinzhao
                          编写于23天之前 最后由 编辑
                          #13

                          直接在uart的配置里选DMA:
                          image.png,然后DMA模块不需要配置,
                          image.png;在串口初始化之前增加DMA初始化函数
                          image.png。就可以使用了。

                          1 条回复 最后回复
                          0
                          • Q 离线
                            Q 离线
                            qinzhao
                            编写于23天之前 最后由 编辑
                            #14

                            增加一个DEMO:
                            UART_IDLE_DMA.zip

                            X 1 条回复 最后回复 23天之前
                            0
                            • X 离线
                              X 离线
                              Xgq
                              回复了qinzhao 23天之前 最后由 编辑
                              #15

                              qinzhao 我这边测了下,使用这个函数UART_DRV_SendData()发送6个8位数据需要大概200us,有没有直接使能DMA传输标志位就可以不用MCU管理的方法?

                              1 条回复 最后回复
                              0

                              11/15

                              2025年6月3日 12:19

                            • 云途论坛规则/Yuntu Forum Rules

                              发帖前请查看

                            • YCT离线License申请流程

                              帮助没办法联网的电脑使用YCT

                            • YT CONFIG TOOL调查问卷

                              帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

                            • demo
                              13
                              can
                              9
                              lin stack
                              6
                              yt-link
                              5
                              vscode
                              3
                              adc模块
                              2
                              i2c
                              2
                              uuid
                              2
                              Online Users
                              Y
                              yt0069
                              不到1分钟之前
                              E
                              eric
                              大约1分钟之前
                              X
                              xianghan
                              5分钟之前
                              W
                              WR
                              5分钟之前
                              E
                              Encryption
                              5分钟之前
                              F
                              Frank
                              7分钟之前
                              Y
                              yifeng_xie
                              10分钟之前
                              Q
                              qq970555603
                              11分钟之前
                              B
                              BJX
                              16分钟之前
                              D
                              Diga
                              20分钟之前
                              P
                              pdm
                              23分钟之前
                              F
                              Frankie
                              26分钟之前
                              H
                              HEX
                              29分钟之前
                              • 登录

                              • 登录或注册以进行搜索。
                              11 / 15
                              • 第一个帖子
                                11/15
                                最后一个帖子
                              0
                              • 版块
                              • 最新
                              • 标签
                              • 热门