当前位置: 首页 > news >正文

沧州网络推广杭州专业seo公司

沧州网络推广,杭州专业seo公司,北京上地网站建设,jsp可以做那些小网站GD32HAL库开发问题 1can初始化进入error handle2发送邮箱不能按照填写顺序发送3 GD32修改代码被stm32cudemx覆盖问题 1can初始化进入error handle HAL库的HAL_CAN_Init中,hcan->Instance->MSR寄存器无法清零,STM32先清零,再退出睡眠模…

GD32HAL库开发问题

    • 1can初始化进入error handle
    • 2发送邮箱不能按照填写顺序发送
    • 3 GD32修改代码被stm32cudemx覆盖问题

1can初始化进入error handle

HAL库的HAL_CAN_Init中,hcan->Instance->MSR寄存器无法清零,STM32先清零,再退出睡眠模式,而GD32需要先退出才能清零

    while ((hcan->Instance->MSR & CAN_MSR_INAK) == 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;}

再其前面加上退出睡眠语句即可

    #if defined(GD32F407xx)CLEAR_BIT(hcan->Instance->MCR, CAN_MCR_SLEEP);#endif/* Wait initialisation acknowledge */while ((hcan->Instance->MSR & CAN_MSR_INAK) == 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;}}

2发送邮箱不能按照填写顺序发送

配置了发送邮箱按照填写邮箱的先后顺序发送,ST可以按照顺序发送,而GD不行

在这里插入图片描述
查看HAL_CAN_AddTxMessage里面,发现transmitmailbox = (tsr & CAN_TSR_CODE) >> CAN_TSR_CODE_Pos获取的GD32空闲的邮箱不对

            /* Select an empty transmit mailbox */transmitmailbox = (tsr & CAN_TSR_CODE) >> CAN_TSR_CODE_Pos;/* Check transmit mailbox value */if (transmitmailbox > 2U) {/* Update error code */hcan->ErrorCode |= HAL_CAN_ERROR_INTERNAL;return HAL_ERROR;}

对比文档发现,CAN_TSR_CODE的寄存器ST和GD定义不一样,ST表示的是空闲邮箱,而GD表示下一个发送邮箱
在这里插入图片描述
在这里插入图片描述
通过TMEx获取空闲邮箱后正常

        if (((tsr & CAN_TSR_TME0) != 0U) || ((tsr & CAN_TSR_TME1) != 0U) || ((tsr & CAN_TSR_TME2) != 0U)) {/* Select an empty transmit mailbox */transmitmailbox = (tsr & CAN_TSR_CODE) >> CAN_TSR_CODE_Pos;#if defined(GD32F407xx)if (CAN_TSR_TME0 == (tsr & CAN_TSR_TME0)) {transmitmailbox = 0;} else if (CAN_TSR_TME1 == (tsr & CAN_TSR_TME1)) {transmitmailbox = 1;} else if (CAN_TSR_TME2 == (tsr & CAN_TSR_TME2)) {transmitmailbox = 2;} else {transmitmailbox = 3;}#endif/* Check transmit mailbox value */if (transmitmailbox > 2U) {/* Update error code */hcan->ErrorCode |= HAL_CAN_ERROR_INTERNAL;return HAL_ERROR;}

3 GD32修改代码被stm32cudemx覆盖问题

在上面中,对GD32不一样的地方加入了GD32F407xx预处理命令,在KEIL或stm32cubeid中定义该宏就可以编译可以加入GD32代码,但是每次重新生成代码都会被覆盖。在库文件里面修改改文件后,cubemx生成文件时从库复制过来就是修改后的文件。
对应的库文件路径在C:\Users\用户名\STM32Cube\Repository\STM32Cube_FW_F4_V1.27.1\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_can.c

http://www.ds6.com.cn/news/44355.html

相关文章:

  • 公司网站备案需要什么网址收录大全
  • 中企动力做网站靠谱吗设计师必备的6个网站
  • 建设银行官网站查询河北seo关键词排名优化
  • 宿州做网站公司杭州seo按天计费
  • 网站框架设计好后怎么做泉州seo按天计费
  • 网站单个页面做301企业seo关键字优化
  • 北京中国建设部网站首页怎么联系百度客服人工服务
  • 无锡网站建设运营网上教育培训机构哪家好
  • 制作好的网站有哪些内容计算机基础培训机构
  • 为博彩做网站日入两万青岛网络优化代理
  • 如何做独立的网站销售专门制作小程序的公司
  • 做的很垃圾的网站网络广告公司排名
  • 服装批发网站数据统计网站有哪些
  • 网页游戏排行榜2016成都网站seo诊断
  • 大型游戏门户网站织梦模板沈阳百度seo关键词排名优化软件
  • 外贸网站建设ppt模板网站建设是干嘛的
  • 做网站代理怎么样好用搜索引擎排名
  • 昆山外贸型网站制作野狼seo团队
  • 做网站卖狗挣钱吗关键词的分类和优化
  • 专业网站设计哪家好百度seo如何优化关键词
  • 可以做go分析的网站品牌推广渠道有哪些
  • 老域名做网站好吗宁波如何做抖音seo搜索优化
  • 延安市建设局网站公关公司一般收费标准
  • dw网站模板免费下载网络赚钱推广
  • 可以做试卷的网站英语seo优化排名教程
  • 做网站包括什么阿里云域名注册万网
  • 网站设计部的优化推广平台怎么做
  • 品牌网站开发电工培训机构
  • 网页升级紧急通知在线播放优化设计答案五年级上册
  • 西安政府网站制作需要多少钱