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

智能推荐

(3)组合数学--鸽巢原理之最简单形式_鸽巢原理的三个公式-程序员宅基地

文章浏览阅读220次。定理:把n+1个物体放进n个盒子中,至少有一个盒子中含有两个物体理解:ai为第i天下的总棋盘数,显然an为递增序列,对an做部分和序列:如上图所示,上面77项,下面77项,共154项,153个盒子,所有存在aj+21 = ai,所以21 = aj - ai = bi + bi+1 + … + bj相当于19个物体,18个盒子五个点,四个三角形反证:Li <..._鸽巢原理的三个公式

Qt开发笔记之QCustomPlot:QCustomPlot介绍、编译与使用_qcustomplot编译-程序员宅基地

文章浏览阅读6.6w次,点赞20次,收藏194次。欢迎技术交流和帮助,提供所有IT相关的服务,有需要请联系博主QQ: 21497936,若该文为原创文章,未经允许不得转载原博主博客地址:http://blog.csdn.net/qq21497936本文章博客地址:http://blog.csdn.net/qq21497936/article/details/77847820目录效果 ​Demo下载地址QCustom..._qcustomplot编译

微信小程序的动态显示字体颜色_小程序 color if-程序员宅基地

文章浏览阅读1k次。<text wx:if="{{item.data.status=='待打印'}}" style="color:red">{{item.data.status}}</text><text wx:if="{{item.data.status=='已打印'}}" style="color:green">{{item.data.status}}</text>_小程序 color if

线上PHP问题排查思路与实践-程序员宅基地

文章浏览阅读210次。转载:http://www.bo56.com/%E7%BA%BF%E4%B8%8Aphp%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5%E6%80%9D%E8%B7%AF%E4%B8%8E%E5%AE%9E%E8%B7%B5/前几天,在一淘网,腾讯网媒和微博商业技术联合组织的技术分享大会上,我分享了《在线PHP问题排查思路与实践》。此博文除了对PPT..._在php开发过程中,线上代码怎么查哪段代码有问题,且不影响线上运行

linux 内核升级-程序员宅基地

文章浏览阅读841次,点赞28次,收藏9次。centos 7.x 升级内核 3.x 至 5.x

去掉java文件中的注释_利用JavaParser去除java文件中的注释-程序员宅基地

文章浏览阅读922次。利用JavaParser去除java文件中的注释个人博客:记录一下在项目实施过程中的一些点情景回顾之前项目有个需求,就是去掉.java文件中的所有注释,常用的方法是用正则匹配。然而在网络上查找到的正则或多或少都有一些问题,无法匹配到所有的情况。或者说,由于写.java文件的人的不规范(各种奇葩的问题),导致正则覆盖不全。所以正则方法不靠谱,或者说,存在一定的限制。新的想法后来想到利用AST来去除注..._在线java代码去除注释工具

随便推点

构造函数和析构函数-程序员宅基地

文章浏览阅读4.2k次,点赞10次,收藏25次。构造函数、初始化列表、析构函数_构造函数和析构函数

分布式架构知识体系-程序员宅基地

文章浏览阅读281次。1.问题 1、何为分布式何为微服务? 2、为什么需要分布式? 3、分布式核心理论基础,节点、网络、时间、顺序,一致性? 4、分布式是系统有哪些设计模式? 5、分布式有哪些类型? 6、如何实现分布式? 2.关键词节点,时间,一致性,CAP,ACID,BASE,P2P,机器伸缩,网络变更,负载均衡,限流,鉴权,服务发现,服务编排,降级,熔断,幂等,分库分表,分片分区,自动运维,容错处理,全栈监控,故障恢复,性能调优3.全文概要随着移动互联网_分布式架构知识体系

深信服AF防火墙配置SSL VPN_深信服ssl配置教程-程序员宅基地

文章浏览阅读1.5k次,点赞6次,收藏13次。深信服防火墙配置SSL VN_深信服ssl配置教程

linux系统rabbitmq安装步骤_rabbitmq linux安装-程序员宅基地

文章浏览阅读768次。一、安装erlang:1、先下载rpm包:wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm2、rpm包:rpm -Uvh erlang-solutions-1.0-1.noarch.rpm可能会有以下问题:解决办法:(执行以下命令后,在执行上一条命令)yum..._rabbitmq linux安装

CentOS 7 安装最新版Docker教程_centos7安装最新版dockers-程序员宅基地

文章浏览阅读781次。docker安装官方文档:Install Docker Engine on CentOS2、安装提供了工具3、通过添加docker repository如果出现上面的错误提示,可通阿里源进行添加4、安装docker4.1、直接安装最新版本这步完成后可直接跳至启动docker4.2、或者安装指定版本按版本号倒序列出可安装版本列表安装指定版本例如安装20.10.9版本5、启动docker通过进行启动设置docker服务开机启动6、测试7、卸载docker下的_centos7安装最新版dockers

敏感字识别算法基于JDK8 lambada表达式_敏感文本识别算法-程序员宅基地

文章浏览阅读429次。package aaa.bbb.demo;import java.util.ArrayList;import java.util.List;public class RecognitionDemo { public static void main(String[] args) { String str1="SB哈NM哈哈哈WBDhdsada"; String str_敏感文本识别算法

推荐文章

热门文章

相关标签