stm32cube使用
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使用的更多相关文章
- 基于STM32Cube的脉冲输出
方法一:定时器定时I/O反转生成脉冲波形 1.建立STM32Cube选择STM32F429,我使用的STM32F429-discovery开发板,晶振是8MHz,时钟配置为180M,这样定时器内部时钟 ...
- 基于STM32Cube的IIC主从通信
1.建立STM32Cube工程,我使用的芯片是STM32F429,为了更简单的建立单独的IIC通信任务,我使用了FREERTOS,另外选择了RCC(系统时钟初始化),I2C1,I2C2(为了验证代码的 ...
- 基于STM32Cube的DAC数模转化
1. STM32Cube配置 1.1 DAC配置 1.2 TIM6 配置 1.3 利用Cube产生工程程序,MDK打开软件 在主循环上添加语句: HAL_TIM_Base_S ...
- 基于STM32Cube的ADC模数采样设计
1.背景 此实验建立在STM32F429核心板基础上,对于深刻了解STM32Cube使用具有深刻意义.利用DMA进行ADC采样,具有速度快,极大减少CPU消耗的优势,对于数据采集系统具 ...
- [stm32F429-DISCO-HAL] 1.先说说关于stm32Cube的一些事情。然后,Start with it...
目前,我觉得STM32CUBE最大的方便在于,可以使用STM32CubeMX软件来图形化配置外设.首先贴出官网的PDF,Getting started with STM32CubeF4 firmwar ...
- 使用STM32Cube在STM32F7开发板上实现SD+Freertos+Fatfs
简介 最近项目中可能需要使用到SD卡,所以需要对SD卡的配置和使用调研,在配置过程中遇到了一些问题,在此记录一下. STM32Cube配置 Pinout 只需要注意绿色部分的设定 Clock配置 这里 ...
- MDK5 and STM32Cube
D:\Workspace\........\RTE\Device>STM32CubeMX.exe -s project.script -tpl_path C:\Keil5\ARM\Pack\Ke ...
- ST推出新软件STM32Cube ,让STM32微控制器应用设计变得更容易、更快、更好用
功能强大的STM32Cube 新软件平台由设计工具.中间件和硬件抽象层组成,让客户能够集中精力创新 意法半导体(STMicroelectronics,简称ST)针对STM32微控制器推出一套免费的功能 ...
- STM32CUBEMX入门学习笔记3:HAL库以及STM32CUBE相关资料
微雪课堂:http://www.waveshare.net/study/article-629-1.html 之前的正点原子的例程资料 硬石科技stm32cube: 链接:https://pan.ba ...
随机推荐
- sublime3 快速创建html模板
1 安装 Package Control1.1 ctrl + ` 呼出控制台1.2 复制(不要带最外层的双引号,该代码仅适用于sublime text 3)“import urllib.request ...
- Linux上的oracle巡检脚本
修改自大神博客:http://www.cnblogs.com/jyzhao/p/5364049.html 脚本巡检的优化:自动化,节省时间. 脚本需加强:巡检结果中有大量的sqlplus连接信息,后期 ...
- scrapy 关于特殊字符的处理
今天scrapy 发送一段url的时候,如下 http://apis.map.qq.com/lbscloud/v1/poi/search?poi_table=gas_station&key=R ...
- 黄金连分数|2013年蓝桥杯B组题解析第四题-fishers
黄金连分数 黄金分割数0.61803... 是个无理数,这个常数十分重要,在许多工程问题中会出现.有时需要把这个数字求得很精确. 对于某些精密工程,常数的精度很重要.也许你听说过哈勃太空望远镜,它首次 ...
- [转] Java 基础
1. 面向对象和面向过程的区别 面向过程 面向对象 2. Java 语言有哪些特点 3. 关于 JVM JDK 和 JRE 最详细通俗的解答 JVM JDK 和 JRE 4. Oracle JDK 和 ...
- (zhuan) 资源|TensorFlow初学者必须了解的55个经典案例
资源|TensorFlow初学者必须了解的55个经典案例 2017-05-27 全球人工智能 >>>>>>欢迎投稿:news@top25.cn<<< ...
- C++变量的默认初始化规则
定义没有初始化式的变量时,系统有时候会帮我们初始化变量.系统如何初始化取决于变量的类型以及变量定义的位置. 内置类型变量是否自动初始化取决于变量定义的位置.函数体外定义的变量初始成0:函数体内定义的变 ...
- 使用路由传参时,query与params的区别!
query 1:参数会在地址栏显示 2:参数不需要在路由的path后接:args1/:args2 3:获取参数用this.$route.query.args1 params 1:参数需要在路由的pat ...
- 精通正则表达式(第三版)—Mastering Regular Expressions,3rd Edition—读书笔记2
1.肯定断言:必须匹配一个字符 排除型字符组:匹配未列出字符的字符组 2.范围表示法——列出范围内所有的字符 大多数情况下,不会影响执行速度.但是,某些实现方式不能完全优化字符组.所以,最好是有范围表 ...
- [转载]linux下core文件设置与查看
转自:https://blog.csdn.net/dingqinghui/article/details/77855330?locationNum=9&fps=1 linux下core文件设置 ...