打印
[STM32F4]

最新CUBEMX的HAL的CAN总线配置接受发送(STM32F412)

[复制链接]
楼主: 焊丝滚成球
手机看帖
扫描二维码
随时随地手机跟帖
21
本帖最后由 橡皮擦擦 于 2019-4-15 23:46 编辑
gaoruisolax 发表于 2019-3-29 14:39
感谢楼主分享~
我最近也在使用最新的CAN库,可是会出现HardFaul()里,是由于HAL_CAN_AddTxMeddage()中的
...

我的也是卡死在这里了,只要一发送就卡死在这里,不知是何故,也是按照楼主那样的做的发送! void CAN_TRANSMIT(void)
{                                                
        uint8_t TR_BUF[8]={0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88};

  TxMessage1.DLC=8;                                        //消息的数据长度
  TxMessage1.StdId=0x114;                        //标准标识符
  TxMessage1.ExtId=0x00001314;                //扩展标识符
  TxMessage1.IDE=CAN_ID_STD;                        //CAN_ID_STD使用标准标识符;CAN_ID_EXT 使用扩展标
  TxMessage1.RTR=CAN_RTR_DATA;                //为数据帧

        if(HAL_CAN_AddTxMessage(&hcan,&TxMessage1,TR_BUF,(uint32_t*)CAN_TX_MAILBOX0)!=HAL_OK)
        {
        }
}
发送里经过 if (pHeader->IDE == CAN_ID_STD)
这个卡死在在这里
void HardFault_Handler(void)
{
    while (1)
    {
    }
}


使用特权

评论回复
22
dsyq| | 2019-4-18 15:13 | 只看该作者
看楼主用起来很easy的样子。

而我用2个STM32F103C8T6的开发板对发,安装买家的例程可以。我自己用最新的cubemx生成就不行
我发现执行HAL_CAN_AddTxMessage 时卡死了。

使用特权

评论回复
23
dsyq| | 2019-4-18 15:20 | 只看该作者





小弟刚接触can,请朋友们不吝赐教

使用特权

评论回复
24
wangjiahao88| | 2019-4-18 16:57 | 只看该作者
能不用HAL 就还是使用常规的BSP库比较好!

使用特权

评论回复
25
dsyq| | 2019-4-19 08:14 | 只看该作者
founderHAN 发表于 2018-10-15 15:27
HAL_StatusTypeDef HAL_CAN_AddTxMessage(CAN_HandleTypeDef *hcan, CAN_TxHeaderTypeDef *pHeader, uint8_ ...

对啊  我就发现走到这里死掉了。

使用特权

评论回复
评论
梦醉痴罢 2019-4-23 15:35 回复TA
自己定义一个字节数组再把数组地址代替CAN_TX_MAILBOX0传进去就一切正常了 
26
梦醉痴罢| | 2019-4-23 15:34 | 只看该作者
橡皮擦擦 发表于 2019-4-15 23:38
我的也是卡死在这里了,只要一发送就卡死在这里,不知是何故,也是按照楼主那样的做的发送! void CAN_TRA ...

一开始我也是参考这段代码后来发现发送总是进错误中断。后来一点点排查,发现CAN_TX_MAILBOX0只是一个宏,且值为0x00000001 我没看懂楼主为什么把这个强制转换成地址再传进去的意义。但是自己定义一个字节数组再把数组地址代替CAN_TX_MAILBOX0传进去就一切正常了

使用特权

评论回复
27
dsyq| | 2019-4-23 16:15 | 只看该作者
梦醉痴罢 发表于 2019-4-23 15:34
一开始我也是参考这段代码后来发现发送总是进错误中断。后来一点点排查,发现CAN_TX_MAILBOX0只是一个宏 ...

请参考ST官方的例程啦!

虽然我没完全调通,按照ST来就没问题了。

使用特权

评论回复
28
橡皮擦擦| | 2019-4-23 23:04 | 只看该作者
梦醉痴罢 发表于 2019-4-23 15:34
一开始我也是参考这段代码后来发现发送总是进错误中断。后来一点点排查,发现CAN_TX_MAILBOX0只是一个宏 ...

HAL_CAN_AddTxMessage(&hcan,&TxMessage1,TR_BUF,(uint32_t*)CAN_TX_MAILBOX0)
对,就是最后参数(uint32_t*)CAN_TX_MAILBOX0的问题;要设一个变量传进来;
我发送可以了,但又接收又接收不到,没时间研究了,于是我就用来了低版本的HAL库(1.6);cubemx我也用回了低版本的了,真是悲催啊!

使用特权

评论回复
29
zhiwangwei| | 2019-5-13 16:46 | 只看该作者
gaoruisolax 发表于 2019-3-29 14:39
感谢楼主分享~
我最近也在使用最新的CAN库,可是会出现HardFaul()里,是由于HAL_CAN_AddTxMeddage()中的
...

我也遇到这个问题 您这边解决了吗?是什么问题

使用特权

评论回复
30
zhiwangwei| | 2019-5-14 11:33 | 只看该作者
founderHAN 发表于 2018-10-15 15:27
HAL_StatusTypeDef HAL_CAN_AddTxMessage(CAN_HandleTypeDef *hcan, CAN_TxHeaderTypeDef *pHeader, uint8_ ...

CAN_TX_MAILBOX0  这个换成CAN_TX_MAILBOX1  就不会进hardfaul  不解

使用特权

评论回复
31
sunye772| | 2020-1-15 17:00 | 只看该作者
zhiwangwei 发表于 2019-5-14 11:33
CAN_TX_MAILBOX0  这个换成CAN_TX_MAILBOX1  就不会进hardfaul  不解

是的,我把0改成1 用的回环模式就正常了

使用特权

评论回复
32
a32425262| | 2021-5-15 21:30 | 只看该作者
本帖最后由 a32425262 于 2021-5-15 21:48 编辑

楼主的说明还是很有帮助的我这里测试通过了
看到大家遇到的两个问题
协助大家解决一下
1、使用新版HAL库中的HAL_CAN_AddTxMessage发送就死机看库文件注释中有说明

/**
  * @brief  Add a message to the first free Tx mailbox and activate the
  *         corresponding transmission request.
  * @param  hcan pointer to a CAN_HandleTypeDef structure that contains
  *         the configuration information for the specified CAN.
  * @param  pHeader pointer to a CAN_TxHeaderTypeDef structure.
  * @param  aData array containing the payload of the Tx frame.
  * @param  pTxMailbox pointer to a variable where the function will return
  *         the TxMailbox used to store the Tx message.
  *         This parameter can be a value of @ARG CAN_Tx_Mailboxes.
  * @retval HAL status
  */
这个是因为楼主发送函数的参数写错了,最后一个参数,要自己定义一个变量,然后取地址使用
楼主的是:
HAL_CAN_AddTxMessage(&hcan1,&TxMessage1,TR_BUF,(uint32_t*)CAN_TX_MAILBOX0);
修改为:
int my_pTxMailbox;
HAL_CAN_AddTxMessage(&hcan1,&TxMessage1,TR_BUF,(uint32_t*)&my_pTxMailbox)

这里面的最后一个参数就相当于一个返回值之类的
2、无法接收不仅接收中断
2.1检查一下是否使用了楼主的打开中断
2.2检查一下是否开启的过滤器


使用特权

评论回复
33
minzisc| | 2023-4-9 14:34 | 只看该作者

STM32HAL库写CAN通信程序最近遇到了难题

使用特权

评论回复
34
maqianqu| | 2023-4-9 14:46 | 只看该作者
在STM32CubeMX中,STM32F207如何对CAN进行配置

使用特权

评论回复
35
mickit| | 2023-4-9 14:57 | 只看该作者
STM32Cube 是一个全面的软件平台,包括了ST产品的每个系列。

使用特权

评论回复
36
mnynt121| | 2023-4-9 15:20 | 只看该作者
stm32cubemx生成项目文件如何和keil一起

使用特权

评论回复
37
ccook11| | 2023-4-9 15:37 | 只看该作者
STM32系列兼容性高。尤其跟STM32CUBEMX工具配合得好

使用特权

评论回复
38
gygp| | 2023-4-9 15:49 | 只看该作者
用STM32CubeMX怎么配置CAN接收中断

使用特权

评论回复
39
sdlls| | 2023-4-9 15:52 | 只看该作者
stm32f407如何转canfd  

使用特权

评论回复
40
jkl21| | 2023-4-9 16:24 | 只看该作者
STM32 利用Hal库实现UART中断处理

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则