CAN驱动代码-程序员宅基地

技术标签: STM32F103ZET6 固件驱动  

#include "can.h"
#include "led.h"
#include "delay.h"
#include "usart.h"
// 
//CAN驱动代码       
// 
//CAN初始化
//tsjw:重新同步跳跃时间单元.范围:1~3;
//tbs2:时间段2的时间单元.范围:1~8;
//tbs1:时间段1的时间单元.范围:1~16;
//brp :波特率分频器.范围:1~1024;(实际要加1,也就是1~1024) tq=(brp)*tpclk1
//注意以上参数任何一个都不能设为0,否则会乱.
//波特率=Fpclk1/((tbs1+tbs2+1)*brp);
//mode:0,普通模式;1,回环模式;
//Fpclk1的时钟在初始化的时候设置为36M,如果设置CAN_Normal_Init(1,8,7,5,1);
//则波特率为:36M/((8+7+1)*5)=450Kbps
//返回值:0,初始化OK;
//    其他,初始化失败;
u8 CAN_Mode_Init(u8 tsjw,u8 tbs2,u8 tbs1,u16 brp,u8 mode)
{
 u16 i=0;
  if(tsjw==0||tbs2==0||tbs1==0||brp==0)return 1;
 tsjw-=1;//先减去1.再用于设置
 tbs2-=1;
 tbs1-=1;
 brp-=1;

 RCC->APB2ENR|=1<<2;    //使能PORTA时钟 
 GPIOA->CRH&=0XFFF00FFF;
 GPIOA->CRH|=0X000B8000;//PA11 RX,PA12 TX推挽输出    
    GPIOA->ODR|=3<<11;
        
 RCC->APB1ENR|=1<<25;//使能CAN时钟 CAN使用的是APB1的时钟(max:36M)
 CAN->MCR=0x0000; //退出睡眠模式(同时设置所有位为0)
 CAN->MCR|=1<<0;  //请求CAN进入初始化模式
 while((CAN->MSR&1<<0)==0)
 {
  i++;
  if(i>100)return 2;//进入初始化模式失败
 }
 CAN->MCR|=0<<7;  //非时间触发通信模式
 CAN->MCR|=0<<6;  //软件自动离线管理
 CAN->MCR|=0<<5;  //睡眠模式通过软件唤醒(清除CAN->MCR的SLEEP位)
 CAN->MCR|=1<<4;  //禁止报文自动传送
 CAN->MCR|=0<<3;  //报文不锁定,新的覆盖旧的
 CAN->MCR|=0<<2;  //优先级由报文标识符决定
 CAN->BTR=0x00000000;//清除原来的设置.
 CAN->BTR|=mode<<30; //模式设置 0,普通模式;1,回环模式;

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zongguo/article/details/9098047

智能推荐

ArcGIS 要素闪烁-程序员宅基地

文章浏览阅读366次。ArcGIS 要素闪烁通过双击要素图例,闪烁定位到要素,并且闪烁一段时间: IFeatureLayer featureLayer = layer as IFeatureLayer; ITable table = featureLayer as ITable; IRow row..._arcgis定位十字闪烁

【moeCTF题解-0x06】Web_moectf2023-程序员宅基地

文章浏览阅读2.4k次,点赞3次,收藏4次。title: 【moeCTF题解-0x06】Webcategories:CTFmoeCTFtags:CTFWebPython【moeCTF题解-0x06】Web竟然AK了这部分,但也只是因为题目简单……考虑到在XDSEC里选了web方向,也要好好学习web知识呀【moeCTF题解】总目录如下:(若本文图片看不见请访问以下相应的地址)【moeCTF题解-0x00】序 (包括Sign in)【moeCTF题解-0x01】Reverse (包括An._moectf2023

dva 的一些特殊的写法_dva dispatch 是异步的么?-程序员宅基地

文章浏览阅读1.2k次。dva 的一些奇怪的用法dva 基础 请自行查阅,本文不科普1、12 步 30 分钟,完成用户管理的 CURD 应用 2、dva 的中文文档3、dva 知识导图4、antd-admin 有没有听说过?5、中间件 redux-saga 可以重点看一下6、dva入门指引7、umi + dva 可以了解一下dva 怎么和其他框架配置使用8、roadhog 配置 ,dv..._dva dispatch 是异步的么?

AD生成BOM表/元器件清单-程序员宅基地

文章浏览阅读921次。1.2.3.4.5.保存即可,导出信息如下转载于:https://www.cnblogs.com/wojiaxiaoguo/p/9888455.html_ad10生成顶层元器件清单

MUSICAL CHAIRS (模拟)_musical chairs算法-程序员宅基地

文章浏览阅读542次。题目描述Musical chairs is a game frequently played at children’s parties. Players are seated in a circle facing outwards. When the music starts, the players have to stand up and move clockwise round t..._musical chairs算法

springboot教程目录_springboot 系列 教程-程序员宅基地

文章浏览阅读4.5w次,点赞43次,收藏393次。占个坑_springboot 系列 教程

随便推点

软阈值(soft-thresholding)函数_软值域函数-程序员宅基地

文章浏览阅读865次,点赞3次,收藏6次。版权声明:本文为博主原创文章,转载请注明出处,谢谢! https://blog.csdn.net/jbb0523/article/details/52103257 &lt;/div&gt; &lt;link rel="stylesheet" href="https://csdnimg.cn/release/phoeni..._软值域函数

在vscode中使用远程仓库扩展_此扩展在此工作区中被禁用,因为其被定义为在远程扩展主机中运行-程序员宅基地

文章浏览阅读8k次。在vscode中使用远程仓库原文:Remote Repositories extension for Visual Studio Code2021 年 6 月 10 日,作者 Brigit Murtaugh、@BrigitMurtaugh、Eric Amodio、@eamodio我们很高兴为 Visual Studio Code展示新的远程存储库扩展!这是我们与 GitHub 的朋友合作建立的一种新体验,以便能够在 VS Code 中快速安全地使用源代码存储库。一种更快的开放源代码存储库的方法#_此扩展在此工作区中被禁用,因为其被定义为在远程扩展主机中运行

C语言回顾笔记2.-程序员宅基地

文章浏览阅读116次。C语言回顾笔记2.

人工智能概述_弱人工智能-程序员宅基地

文章浏览阅读1k次,点赞26次,收藏21次。它属于人工智能领域的一个分支,通过利用统计学、优化算法和模型构建等方法,让计算机能够从大量的数据中进行归纳和推理,从而做出预测、分类、聚类等任务。这些技术和方法基于统计学、优化算法、推理和逻辑,致力于从数据中提取模式、进行决策和预测,并模拟和实现人类的认知和智能行为。无监督学习(Unsupervised Learning):无监督学习使用未标记的数据作为输入,让计算机自主地发现数据中的模式和结构,进行数据的聚类、降维或异常检测等任务。它致力于开发和构建能够感知、理解、学习、推理和决策的智能系统。_弱人工智能

STM32 HAL库 硬件I2C 从机主机防BUG程序_stm32 hal iic bug-程序员宅基地

文章浏览阅读1.1w次,点赞36次,收藏183次。前言最近死磕了5天的STM32F1硬件I2C从机的程序,天天早上8点到凌晨,几乎全程心流状态。终于在结合各方资料即自己的思考后,做出了稳定的硬件I2C代码(这个文章中应该是目前为止能查到的最详述可用的硬件I2C代码),经过各种奇怪的I2C主机型号的蹂躏后,通讯都可以恢复正常,不会被卡死。证明该方案拥有极高稳定性。需要注意我这次使用的是 STM32F103C8T6 的兼容型号 GD32F103C8T6 。要问他的兼容性有多强,连I2C bug都能做到一样,哈哈。我当初用GD想着硬件I2C应该能舒服用了,万_stm32 hal iic bug

Linux---phy外设调试(一)_linux phy调试-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏9次。Linux下phy芯片的调试_linux phy调试

推荐文章

热门文章

相关标签