1、使用stm32cube生成CAN代码注意事项:

  a、需要手动配置CAN过滤器

{
CAN_FilterConfTypeDef sFilterConfig;
uint32_t filterID = (uint32_t)SysAddr<<23;
uint32_t filterMaskID = 0x7F800000; sFilterConfig.FilterNumber = 0;
sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK;
sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT;
sFilterConfig.FilterIdHigh = (uint16_t)(filterID>>16);
sFilterConfig.FilterIdLow = filterID;
sFilterConfig.FilterMaskIdHigh = (uint16_t)(filterMaskID>>16);
sFilterConfig.FilterMaskIdLow = filterMaskID;
sFilterConfig.FilterFIFOAssignment = 0; //收到的报文放在FIFO 0里面
sFilterConfig.FilterActivation = ENABLE;
sFilterConfig.BankNumber = 14; if (HAL_CAN_ConfigFilter(&hcan, &sFilterConfig) != HAL_OK)
{
/* Filter configuration Error */
Error_Handler();
} filterID = 0x7F800000;
sFilterConfig.FilterNumber = 1;
sFilterConfig.FilterIdHigh = (uint16_t)(filterID>>16);
sFilterConfig.FilterIdLow = filterID; if (HAL_CAN_ConfigFilter(&hcan, &sFilterConfig) != HAL_OK)
{
/* Filter configuration Error */
Error_Handler();
}
}

  b、需要手动使能CAN FIFO接收中断

HAL_CAN_Receive_IT(&hcan, CAN_FIFO0);	//使能FIFO0接收中断

  c、需要手动初始化数据结构体

typedef struct
{
CanTxMsgTypeDef TxMsg;
CanRxMsgTypeDef RxMsg;
CanRxMsgTypeDef Rx1Msg;
}CAN_RxTxBufTypeDef; CAN_RxTxBufTypeDef CAN_RxTxBuf; void Can_DataRxTxInit(CAN_HandleTypeDef* hcan)
{
memset(&CAN_RxTxBuf, 0X00, sizeof(CAN_RxTxBuf)); hcan->pTxMsg = (CanTxMsgTypeDef *)&CAN_RxTxBuf.TxMsg;
hcan->pRxMsg = (CanRxMsgTypeDef *)&CAN_RxTxBuf.RxMsg;
hcan->pRx1Msg = (CanRxMsgTypeDef *)&CAN_RxTxBuf.Rx1Msg;
}

  d、每次接收中断完成后需要手动使能下一次接收中断

void USB_LP_CAN1_RX0_IRQHandler(void)
{
/* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 0 */
/* USER CODE END USB_LP_CAN1_RX0_IRQn 0 */
HAL_CAN_IRQHandler(&hcan);
HAL_CAN_Receive_IT(&hcan,CAN_FIFO0); /* USER CODE END USB_LP_CAN1_RX0_IRQn 1 */
}

  e、数据接收、发送与错误回调函数

void HAL_CAN_TxCpltCallback(CAN_HandleTypeDef* hcan);
void HAL_CAN_RxCpltCallback(CAN_HandleTypeDef* hcan);
void HAL_CAN_ErrorCallback(CAN_HandleTypeDef *hcan);

2、使用STM32WB系列中间件STM32_WPAN(version5.1.0)

要使能WPAN BLE中间件,需要激活外设RTC、HSEM、RF,否则不能使用WPAN BLE中间件

其它的配置引用UM1718文档中的说明如下:

Then, an application type must be selected, it can be one among Transparent mode, Server profile, Router profile or Client profile.

Finally, the mode and other parameters relevant to this application type must be configured.

            BLE Server profile selection

            BLE Client profile selection

3、

stm32cube使用的更多相关文章

  1. 基于STM32Cube的脉冲输出

    方法一:定时器定时I/O反转生成脉冲波形 1.建立STM32Cube选择STM32F429,我使用的STM32F429-discovery开发板,晶振是8MHz,时钟配置为180M,这样定时器内部时钟 ...

  2. 基于STM32Cube的IIC主从通信

    1.建立STM32Cube工程,我使用的芯片是STM32F429,为了更简单的建立单独的IIC通信任务,我使用了FREERTOS,另外选择了RCC(系统时钟初始化),I2C1,I2C2(为了验证代码的 ...

  3. 基于STM32Cube的DAC数模转化

    1. STM32Cube配置 1.1 DAC配置   1.2 TIM6 配置 1.3 利用Cube产生工程程序,MDK打开软件       在主循环上添加语句:      HAL_TIM_Base_S ...

  4. 基于STM32Cube的ADC模数采样设计

    1.背景         此实验建立在STM32F429核心板基础上,对于深刻了解STM32Cube使用具有深刻意义.利用DMA进行ADC采样,具有速度快,极大减少CPU消耗的优势,对于数据采集系统具 ...

  5. [stm32F429-DISCO-HAL] 1.先说说关于stm32Cube的一些事情。然后,Start with it...

    目前,我觉得STM32CUBE最大的方便在于,可以使用STM32CubeMX软件来图形化配置外设.首先贴出官网的PDF,Getting started with STM32CubeF4 firmwar ...

  6. 使用STM32Cube在STM32F7开发板上实现SD+Freertos+Fatfs

    简介 最近项目中可能需要使用到SD卡,所以需要对SD卡的配置和使用调研,在配置过程中遇到了一些问题,在此记录一下. STM32Cube配置 Pinout 只需要注意绿色部分的设定 Clock配置 这里 ...

  7. MDK5 and STM32Cube

    D:\Workspace\........\RTE\Device>STM32CubeMX.exe -s project.script -tpl_path C:\Keil5\ARM\Pack\Ke ...

  8. ST推出新软件STM32Cube ,让STM32微控制器应用设计变得更容易、更快、更好用

    功能强大的STM32Cube 新软件平台由设计工具.中间件和硬件抽象层组成,让客户能够集中精力创新 意法半导体(STMicroelectronics,简称ST)针对STM32微控制器推出一套免费的功能 ...

  9. STM32CUBEMX入门学习笔记3:HAL库以及STM32CUBE相关资料

    微雪课堂:http://www.waveshare.net/study/article-629-1.html 之前的正点原子的例程资料 硬石科技stm32cube: 链接:https://pan.ba ...

随机推荐

  1. thiniphp tp5 使用缓存

    在应用或者模块配置文件中配置好所用缓存的类型及相关参数: 如果是文件类型可以用 'cache' => [ 'type' => 'File', 'path' => CACHE_PATH ...

  2. topcoder srm 490 div1

    problem1 link 首先每$n*m$一定是一个循环,所以只需要考虑时间$[0,n*m-1]$即可.这个期间一共出现了$n$个,第i个的出现时间为$m*i$,离开的时间为$\left \lcei ...

  3. Java:The hierarchy of the type is inconsistent错误

    错误 The type com.jiuqi.dna.ui.language.INLStringGroup cannot be resolved. It is indirectly referenced ...

  4. linux shell的for循环语法是怎样的?

    答:如下: ;i<100;i++)) do echo "i=${i}" done

  5. 【lg1799】数列

    题目描述 虽然msh长大了,但她还是很喜欢找点游戏自娱自乐.有一天,她在纸上写了一串数字:1,l,2,5,4.接着她擦掉了一个l,结果发现剩下l,2,4都在自己所在的位置上,即1在第1位,2在第2位, ...

  6. vim插件的安装方式 -- vim注释插件和doxygen函数注释生成插件-ctrlp插件-tabular等号对齐 插件

    使用unzip的时候 指定 -d选项, 是说明解压到的 目标地址. 这个参数还是比较方便的, 比直接unzip到当前目录, 然后在去拷贝到目标目录, 然后再删除当前目录中的解压文件夹, 方便多了. 使 ...

  7. loj#2510. 「AHOI / HNOI2018」道路 记忆化,dp

    题目链接 https://loj.ac/problem/2510 思路 f[i][a][b]表示到i时,公路个数a,铁路个数b 记忆化 复杂度=状态数=\(nlog^2n\) 代码 #include ...

  8. 【Dalston】【第四章】容错保护(Hystrix)

    我们在实践微服务架构时,通常会将业务拆分成一个个微服务,微服务之间通过网络进行通信,进行互相调用,造成了微服务之间存在依赖关系.我们知道由于网络原因或者自身的原因,服务并不能保证服务的100%可用,如 ...

  9. hihoCoder week4 Trie图

    ac自动机 题目链接 https://hihocoder.com/contest/hiho4/problem/1 参考:https://blog.csdn.net/baidu_30541191/art ...

  10. P2604 [ZJOI2010]网络扩容

    思路 简单的费用流问题,跑出第一问后在残量网络上加边求最小费用即可 代码 #include <cstdio> #include <algorithm> #include < ...