问题一描述:CAN初始化就返回到Error_Handler,无法初始化通过。

经过单步调试,程序一直while ((hcan->Instance->MSR & CAN_MSR_SLAK) != 0U)卡在这步,无法退出休眠模式响应,直到超时:

/* Exit from sleep mode */CLEAR_BIT(hcan->Instance->MCR, CAN_MCR_SLEEP);/* Get tick */tickstart = HAL_GetTick();/* Check Sleep mode leave acknowledge */while ((hcan->Instance->MSR & CAN_MSR_SLAK) != 0U){if ((HAL_GetTick() - tickstart) > CAN_TIMEOUT_VALUE){/* Update error code */hcan->ErrorCode |= HAL_CAN_ERROR_TIMEOUT;/* Change CAN state */hcan->State = HAL_CAN_STATE_ERROR;return HAL_ERROR;}}

原因分析:

通过示波器抓到波形,发现CAN_RX引脚一直时低电平,而在初始化时,是有上拉的(CAN要上线的话必须等待RX上有足够长的"隐性"信号,如果没有加收发器或者没有上拉的话,这个RX上的信号是不对的,所以就会超时了):

所以,软件配置是没有错的。需要确认硬件,发现硬件CAN芯片有边东,由之前的TJA1042改成了TJA1042T/3/1J,由于时间原因,没有具体去分析两者之间的区别(待有时间再去分析)。直接替换成之前的TJA1042即正常。


解决方案:

替换了芯片原因导致,换回之前的TJA1042芯片即可。


问题二描述:串口接收不到数据

在调试过程中,因为用到的串口比较多,数据接收比较频繁,其中某一路串口一直接收不到数据,其他的串口正常。


原因分析:

因为串口数据接收比较频繁,各路串口的优先级配置都是一样,发现某一路串口一直出现ORE错误,导致此路串口数据接收不到,一直进入ORE错误处理函数中。


解决方案:

针对不同的串口接收,按照数据的输出频率和接收数据优先级进行重新分配,针对每一组串口对ORE错误处理。

问题三描述:每次从boot跳到App后,就立马进入hardfault。

单独跑APP的代码没问题,每次从Boot跳到APP后,就立马进入hardfault。无法进入main入口。


原因分析:

单步调试发现,应用每次SystemInit完成后,一退出SystemInit进入main,就进入hardfault。发现程序根本没办法运行,可是单独跑boot和app都没问题,就说明boot和app代码都是没问题的。整合后在一起就出问题。而整合后只有代码空间变大,所以,怀疑是不是因为芯片选型导致。经过一番查找,终于在keil—>Option—>debug—>settings—>Flash Download—>Programming Algorithm中选择的文件仍然还stm32的,导致flash空间范围不对。

![在这里插入图片描述](https://img-

解决方案:

重新选择GD32的文件即可:

STM32 Hal库移植到GD32上遇到的问题相关推荐

  1. STM32 HAL库详解 及 手动移植

    源: STM32 HAL库详解 及 手动移植

  2. STM32 HAL库、标准外设库、LL库(STM32 Embedded Software)

    STM32 Embedded Software 工作以来一直使用ST的STM32系列芯片,ST为开发者提供了非常方便的开发库.到目前为止,有标准外设库(STD库).HAL库.LL库 三种.前两者都是常 ...

  3. STM32 HAL库学习笔记1-HAL库简介

    STM32 HAL库学习笔记1-HAL库简介 HAL库 SPL 库 和 HAL 库两者相互独立,互不兼容.几种库的比较如下 目前几种库对不同芯片的支持情况如下 ST 中文官网上有一篇<关于ST库 ...

  4. STM32 HAL库详解

    STM32 HAL库整体总结 STM32 之二 HAL库详解 及 手动移植 本篇博客是对以上参考资源的一个二次总结与整理. 1. HAL库文件结构 对于开发人员而言,首先要清楚 HAL 库的文件结构. ...

  5. stm32 HAL库分析之CAN

    stm32 HAL库分析之CAN 阻塞发送 HAL_StatusTypeDef HAL_CAN_Transmit(CAN_HandleTypeDef* hcan, uint32_t Timeout) ...

  6. STM32 HAL库组成概述

    STM32 HAL库概述 ## (一)HAL库设计思想 什么是HAL(Hardware Abstraction Layer)? from 百度百科: 硬件抽象层是位于操作系统内核与硬件电路之间的接口层 ...

  7. [STM32F1]基于STM32 HAL库实现鼠标键盘摇杆的USB复合设备

    序: 其实这样一个设备我们在ch32v103上实现过,但移植到STM32 HAL库上面,还是发现很多问题的,现在就移植过程给大家分享一下在基于STM32 HAL库实现鼠标键盘摇杆的USB复合设备的实现 ...

  8. 如何快速使用STM32 HAL库和涂鸦Wi-Fi模组进行通信

     简介:本文将教大家如何使用STM32HAL库快速开发和涂鸦WIFI模组通信,接入涂鸦云. 实现功能:通过APP实时监测温湿度数据 程序下载路径:demo程序. demo(定时采集数据)程序. 一.使 ...

  9. STM32 HAL库学习笔记2 HAL库介绍

    STM32 HAL库学习笔记2 HAL库介绍 CMSIS标准 一.再次认识HAL库 HAL库设计思想 HAL库实现方式 以GPIO模块为例 GPIO外设数据类型 GPIO外设接口函数 二.使用HAL库 ...

最新文章

  1. 12C expdp issue
  2. mysql5.6.42 力资源_MySQL5.6.42解压版安装教程
  3. 打开另外一个页面_如何在PDF页面中插入图片?
  4. Scrapy爬虫中的链接提取器LinkExtractor
  5. java 子类继承父类_关于Java 的继承问题,子类会继承父类的哪些东西?-----转载...
  6. php数组实例,php常用数组函数实例小结
  7. 团队编程项目开发环境搭建过程
  8. Python - 虚拟环境
  9. WordPress使用360CDN替换google服务,解决WordPress打开速度变慢问题
  10. Matlab~30个算法
  11. 贝叶斯决策论(一):贝叶斯决策理论
  12. 树莓派( Raspberry Pi )3B+ 能做什么?
  13. h2o api java_h2o H2OAutoEncoderEstimator
  14. 在UE5中嵌入浏览器
  15. 学习OpenCV 函数方法结构总结
  16. 关于人工智能,你知道怎么学吗
  17. 数据库访问性能优化(转)
  18. JConsole连接远程服务器方法
  19. Verilog HDL 程序设计(三)
  20. 如何学习python数据分析?

热门文章

  1. upload-labs第一关
  2. 【面经】华为od C/C++开发岗通过经验
  3. [个人疑问]为什么列表转集合后其长度的地址时变时不变?(未解决)
  4. 气象要素的基本属性和展现形式
  5. linux losetup命令,loop device介绍及losetup使用
  6. 计算机应用基础李雪第三版答案,计算机应用基础--李雪 第3章计算机的基础知识.ppt...
  7. SOA技术架构下时序图的一种表达方式
  8. Tikz 作图教程:pgfplots 宏包三维数据的可视化绘图
  9. 如何使用Python+Django+Mysql开发个性化职位推荐系统 招聘网站推荐系统 基于用户、项目的协同过滤推荐算法 基于内容、聚类、关联规则推荐算法WebPositionCFRSPython
  10. php 百度传课,百度传课KK