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

STM32 CAN 过滤器设置

做个笔记吧 ,免得以后忘记了

芯片是stm32F207  ,用cubeMX 6.80 版本生成

CAN 的使用总体包含4个部分

第一步:CAN初始化,配置波特率  (cubeMX 里面配置好后自动生成,不需要手动添加)

MX_CAN1_Init();

第二步:接收部分的滤波器代码需要单独配置,CUBEMX未生成此部分代码。

 CAN_SetFilters();

第三步:

//使能CAN

HAL_CAN_Start(&hcan1);
//激活接收
 HAL_CAN_ActivateNotification(&hcan1, CAN_IT_RX_FIFO0_MSG_PENDING) ;

第四步

//实现接收回调函数

HAL_CAN_RxFifo0MsgPendingCallback();
void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *CanHandle)
{
    CAN_RxHeaderTypeDef    RxHeader;     
    if(HAL_CAN_GetRxMessage(CanHandle, CAN_RX_FIFO0, &RxHeader, RX_data)   !=HAL_OK)
    {
      Error_Handler();
    }
    /*
    处理接收到的数据
    */    

    if (hcan->Instance == CAN1) {
            // user to do 
    }
}

这里重点记录CAN 的过滤器配置

HAL_StatusTypeDef CAN_SetFilters(void)
{

    CAN_FilterTypeDef    canFilter;
    HAL_StatusTypeDef result;
     //1. 设置FIFO 0 的筛选器
    uint32_t StdId = 0x50A;            //标准CAN ID 是11位
    canFilter.FilterBank = 0;        //筛选器组编号
    canFilter.FilterMode = CAN_FILTERMODE_IDMASK;    //ID掩码模式
    canFilter.FilterScale = CAN_FILTERSCALE_32BIT;    //32位长度

    canFilter.FilterIdHigh = StdId<<5;        //CAN_FxR1 寄存器的高16位
    canFilter.FilterIdLow = 0x0000;            //CAN_FxR1 寄存器的低16位
    canFilter.FilterMaskIdHigh = 0xFFE<<5;//最后一位不需匹配,其余位完全匹配 //CAN_FxR2寄存器的高16位
    canFilter.FilterMaskIdLow = 0xFFFF;//0x0000; 完全匹配        //CAN_FxR2寄存器的低16位
    
    canFilter.FilterFIFOAssignment = CAN_RX_FIFO0;        //应用于FIFO 0
    canFilter.FilterActivation = ENABLE;        //使用筛选器
    canFilter.SlaveStartFilterBank = 0;        //从CAN控制器筛选器起始的Bank
 
    result=HAL_CAN_ConfigFilter(&hcan1, &canFilter);

    //add 
    HAL_CAN_ActivateNotification(&hcan1, CAN_IT_RX_FIFO0_MSG_PENDING);
    HAL_CAN_Start(&hcan1);

    return result;
}

相关文章:

STM32 CAN 过滤器设置

做个笔记吧 &#xff0c;免得以后忘记了 芯片是stm32F207 &#xff0c;用cubeMX 6.80 版本生成 CAN 的使用总体包含4个部分 第一步&#xff1a;CAN初始化&#xff0c;配置波特率 (cubeMX 里面配置好后自动生成&#xff0c;不需要手动添加) MX_CAN1_Init(); 第二步&#…...

日常BUG—— maven编译报错

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;日常BUG、BUG、问题分析☀️每日 一言 &#xff1a;存在错误说明你在进步&#xff01; 一、问题描述 一个maven项目在由于在代码中书写了如下代码&#xff1a; public static ConcurrentMap<…...

Unity 工具 之 Azure 微软SSML语音合成TTS流式获取音频数据的简单整理

Unity 工具 之 Azure 微软SSML语音合成TTS流式获取音频数据的简单整理 目录 Unity 工具 之 Azure 微软SSML语音合成TTS流式获取音频数据的简单整理 一、简单介绍 二、实现原理 三、实现步骤 四、关键代码 一、简单介绍 Unity 工具类&#xff0c;自己整理的一些游戏开发可…...

学习Vue:插值表达式和指令

在 Vue.js 中&#xff0c;Vue 实例与数据绑定是构建动态交互界面的关键。在这篇文章中&#xff0c;我们将重点介绍 Vue 实例中两种实现数据绑定的方式&#xff1a;插值表达式和指令。这些机制允许您将数据无缝地渲染到界面上&#xff0c;实现实时的数据更新和展示。 插值表达式…...

echart 3d立体颜色渐变柱状图

如果可以实现记得点赞分享&#xff0c;谢谢老铁&#xff5e; 1.需求描述 根据业务需求将不同的法律法规&#xff0c;展示不同的3d立体渐变柱状图。 2.先看下效果图 3. 确定三面的颜色&#xff0c;这里我是自定义的颜色 // 右面生成颜色const rightColorArr ref(["#79D…...

linux shell变量

linux shell变量 1、变量命名规则2、只读变量3、删除变量 1、变量命名规则 变量名不能加$命名只能使用英文字母、数字和下划线&#xff0c;首个字母不能以数字开头中间不能有空格。可以有下划线不能使用标点符号不能使用bash中的关键字 username"tom"引用 $userna…...

Linux 发行版 Debian 12.1 发布

在今年 6 月初&#xff0c;Debian 12“bookworm”发布&#xff0c;而日前 Debian 迎来了 12.1 版本&#xff0c;主要修复系统用户创建等多个安全问题。 Debian 是最古老的 GNU / Linux 发行版之一&#xff0c;也是许多其他基于 Linux 的操作系统的基础&#xff0c;包括 Ubuntu…...

【Rust】Rust学习 第七章使用包、Crate和模块管理不断增长的项目

目前为止&#xff0c;我们编写的程序都在一个文件的一个模块中。伴随着项目的增长&#xff0c;你可以通过将代码分解为多个模块和多个文件来组织代码。一个包可以包含多个二进制 crate 项和一个可选的 crate 库。伴随着包的增长&#xff0c;你可以将包中的部分代码提取出来&…...

网站SSL安全证书是什么及其重要性

网站SSL安全证书具体来说是一个数字文件&#xff0c;是由受信任的数字证书颁发机构&#xff08;CA机构&#xff09;进行审核颁发的&#xff0c;其中包含CA发布的信息&#xff0c;该信息表明该网站已使用加密连接进行了安全保护。 网站SSL安全证书也被称为SSL证书、https证书和…...

Android Alarm闹钟API使用心得

前言 有什么办法可以在不打开App的时候&#xff0c;也能够触发一些操作呢&#xff1f;比如说发送通知&#xff0c;解决这个需求的办法有很多种选择&#xff0c;比如说官方推荐的WorkManager API&#xff0c;可以在后台执行一次性、耗时、定时的任务&#xff0c;但WorkManager是…...

什么是业务敏捷,如何实现业务敏捷?

点击链接了解详情 作者介绍 前言 随着越来越多行业的企业开始关注敏捷&#xff0c;业务敏捷&#xff08;Business Agility&#xff09;成为一个新的热点。毕竟大部分的行业和组织与软件无关&#xff0c;但是依然要实现业务上的敏捷&#xff0c;所以这个系列会主要谈两点&#…...

​ATF(TF-A)安全通告 TFV-7 (CVE-2018-3639)​

安全之安全(security)博客目录导读 ATF(TF-A)安全通告汇总 目录 一、ATF(TF-A)安全通告 TFV-7 (CVE-2018-3639) 二、静态缓解&#xff08;Static mitigation&#xff09; 三、动态缓解&#xff08;Dynamic mitigation&#xff09; 一、ATF(TF-A)安全通告 TFV-7 (CVE-2018…...

第三天课程下

1.项目目录介绍和运行流程 工程化开发模式中&#xff1a;这里不再直接编写模板语法&#xff0c;通过 App.vue 提供结构渲染 main.js文件 // 文件核心作用&#xff1a;导入App.vue&#xff0c;基于App.vue创建结构渲染index.html // 1. 导入 Vue 核心包 import Vue from vue// …...

嵌入式编译FFmpeg6.0版本并且组合x264

下载直通车:我用的是6.0版本的 1.准备编译: 2.进入ffmpeg源码目录&#xff0c;修改Makefile&#xff0c;添加编译选项&#xff1a; CFLAGS -fPIC 不加会报错 3.使用命令直接编译 ./configure --cross-prefix/home/xxx/bin/arm-linux-gnueabihf- --enable-cross-compile --targ…...

原子css 和 组件化css如何搭配使用

如果让你来实现下面这种页面&#xff0c;该怎么实现呢 原子化和css组件化方式写法&#xff0c;可以搭配起来使用&#xff0c;常用的css 原子css 比如 下面这些类似flex 布局&#xff0c;lstn curser-pointer 等常用的或者 具备一定规律性的padding margin 样式可以抽取为单独…...

Python 实现Selenium录屏的一种方法(图片整合成动态图)

由于UI层自动化的不稳定性&#xff0c;经常会遇到执行中断或用例失败的问题&#xff0c;以下是一些常见的措施。 1.详细的日志 2.定位出错时截图 3.Pytest的缓存机制(可以记录成功了哪些失败了哪些) 4.自动重试机制(如pytest-rerunfailures) 5.用例录像 用例录像是最直观的一…...

【设计模式——学习笔记】23种设计模式——策略模式Strategy(原理讲解+应用场景介绍+案例介绍+Java代码实现)

文章目录 案例引入传统方案实现实现分析 介绍基本介绍登场角色 案例实现案例一类图实现 案例二类图实现问答 策略模式在JDK源码中的使用总结文章说明 案例引入 有各种鸭子&#xff0c;比如野鸭、北京鸭、水鸭等。 鸭子有各种行为&#xff0c;比如走路、叫、飞行等。不同鸭子的…...

通讯商二要素Api接口验证真伪

随着互联网的普及和各种社交平台、电商平台、金融平台的发展&#xff0c;许多业务都需要用户进行实名认证&#xff0c;这也就涉及到了手机号码和姓名的验证问题。为了解决这个问题&#xff0c;现在有很多运营商提供的二要素API接口能够进行手机号码和姓名的验证&#xff0c;本文…...

React源码解析18(6)------ 实现useState

摘要 在上一篇文章中&#xff0c;我们已经实现了函数组件。同时可以正常通过render进行渲染。 而通过之前的文章&#xff0c;beginWork和completeWork也已经有了基本的架子。现在我们可以去实现useState了。 实现之前&#xff0c;我们要先修改一下我们的index.js文件&#x…...

MongoDB的下载和安装

一、MongoDB下载 下载地址&#xff1a;https://www.mongodb.com/try/download/community 二、安装 因为选择下载的是 .zip 文件&#xff0c;直接跳过安装&#xff0c;一步到位。 选择在任一磁盘创建空文件夹&#xff08;不要使用中文路径&#xff09;&#xff0c;解压之后把…...

不止于提取:拿到ipa包后,这5种实用分析技巧你应该知道(以查看URL Scheme为例)

不止于提取&#xff1a;拿到ipa包后&#xff0c;这5种实用分析技巧你应该知道&#xff08;以查看URL Scheme为例&#xff09; 当你费尽周折终于拿到一个iOS应用的ipa包时&#xff0c;可能以为任务已经完成。但事实上&#xff0c;这只是探索的开始。一个ipa文件就像一座未开采的…...

ATK-UART2ETH模块实战:5分钟搞定串口设备联网,告别老旧PLC的通讯烦恼

ATK-UART2ETH模块实战&#xff1a;5分钟搞定串口设备联网&#xff0c;告别老旧PLC的通讯烦恼 在工业自动化领域&#xff0c;老旧设备改造一直是个令人头疼的问题。想象一下这样的场景&#xff1a;车间里那台服役十年的西门子S7-200 PLC还在兢兢业业地工作&#xff0c;但它唯一…...

WeChatExporter:基于Node.js的iOS微信聊天记录解析与导出方案

WeChatExporter&#xff1a;基于Node.js的iOS微信聊天记录解析与导出方案 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 在移动应用数据管理领域&#xff0c;iOS系统的沙…...

终极字体压缩指南:如何用Fontmin让网页字体加载快3倍

终极字体压缩指南&#xff1a;如何用Fontmin让网页字体加载快3倍 【免费下载链接】fontmin Minify font seamlessly 项目地址: https://gitcode.com/gh_mirrors/fo/fontmin Fontmin是一款基于纯JavaScript开发的字体压缩工具&#xff0c;能够将庞大的字体文件压缩成仅包…...

如何让Windows任务栏变透明?TranslucentTB从入门到精通全攻略

如何让Windows任务栏变透明&#xff1f;TranslucentTB从入门到精通全攻略 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 你是否曾经盯着…...

面试官问CyclicBarrier和CountDownLatch区别?这样回答直接拿Offer(附源码级对比和避坑点)

面试官问CyclicBarrier和CountDownLatch区别&#xff1f;这样回答直接拿Offer&#xff08;附源码级对比和避坑点&#xff09; 在Java并发编程的面试中&#xff0c;CyclicBarrier和CountDownLatch的区别几乎是必问的高频考点。但真正能打动面试官的&#xff0c;绝不仅仅是背诵教…...

告别CubeMX思维定式:用S32DS的Processor Expert玩转S32K144外设配置(含FreeRTOS组件添加)

从CubeMX到Processor Expert&#xff1a;S32K144高效开发实战指南 在嵌入式开发领域&#xff0c;工具链的选择往往决定了开发效率的上限。对于习惯了ST生态的开发者来说&#xff0c;CubeMX的图形化配置已成为肌肉记忆般的操作。但当项目需求将我们推向NXP的S32K系列时&#xff…...

APT32F110 RISC-V开发板printf重定向与串口花式表白项目实战

1. 项目概述&#xff1a;从“Hello World”到“花式表白”的嵌入式浪漫作为一名在嵌入式领域摸爬滚打了十多年的老工程师&#xff0c;我调试过无数块开发板&#xff0c;写过数不清的“Hello World”。但当我拿到爱普特APT32F110这块基于国产RISC-V内核的开发板时&#xff0c;我…...

AR/VR智能眼镜主板设计:从高通平台选型到量产调试全解析

1. 项目概述&#xff1a;从芯片到眼镜&#xff0c;一次完整的AR/VR智能眼镜主板设计之旅 最近几年&#xff0c;智能眼镜的浪潮又回来了&#xff0c;但这次不再是简单的信息提示器&#xff0c;而是真正能承载复杂应用、具备独立计算能力的VR/AR终端。我作为硬件开发的老兵&#…...

第一性原理计算在半导体缺陷研究中的应用:以氢掺杂氧化镓为例

1. 项目概述&#xff1a;从“掺杂”与“缺陷”说起在半导体材料的研究与开发中&#xff0c;我们常常听到“掺杂”这个词。简单来说&#xff0c;就像在炒菜时撒入不同的调料来改变风味&#xff0c;掺杂就是在纯净的半导体材料&#xff08;本征材料&#xff09;中&#xff0c;有目…...