资源简介
STM32的CAN通讯(直接操作寄存器),亲测可用。内有详细的注释和文档。很好的学习资料。
代码片段和文件信息
/*----------------------------------------------------------------------------
QQ: 958664258
21IC用户名:banhushui
交流平台:http://blog.21ic.com/user1/5817/index.html
旺旺:半壶水电子
编译器版本:MDK4.12
*---------------------------------------------------------------------------*/
#include // STM32F10x Library Definitions
#include “STM32_Reg.h“ // STM32 register and bit Definitions
#include “STM32_Init.h“ // STM32 Initialization
#include “CAN.h“ // STM32 CAN adaption layer
// CAN messge for sending
//CAN发送消息邮箱
CAN_msg CAN_TxMsg;
// CAN message for receiving
//CAN接收消息邮箱
CAN_msg CAN_RxMsg;
// CAN HW ready to transmit a message
//发送就绪标志
unsigned int CAN_TxRdy = 0;
// CAN HW received a message
//接收就绪标志
unsigned int CAN_RxRdy = 0;
/*----------------------------------------------------------------------------
setup CAN interface
*----------------------------------------------------------------------------*/
void CAN_setup (void) {
unsigned int brp = stm32_GetPCLK1();
RCC->APB1ENR |= RCC_APB1ENR_CANEN; // enable clock for CAN
// Note: uses PB8 and PB9 for CAN
// enable clock for Alternate Function
//启用复用功能的时钟
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;
// reset CAN remap
//复位CAN重新映射
AFIO->MAPR &= 0xFFFF9FFF;
// set CAN remap use PB8 PB9
//设置CAN重新映射,使用PB8,PB9
AFIO->MAPR |= 0x00004000;
// enable clock for GPIO B
//使能GPIOB使用的RCC时钟
RCC->APB2ENR |= RCC_APB2ENR_IOPBEN;
// CAN RX pin PB.8 input push pull
//PB.8推挽输入
GPIOB->CRH &= ~(0x0F<<0);
GPIOB->CRH |= (0x08<<0);
// CAN TX pin PB.9 alternate output push pull
//PB.9复用推挽输出
GPIOB->CRH &= ~(0x0F<<4);
GPIOB->CRH |= (0x0B<<4);
// enable interrupt
//发送中断使能
NVIC->ISER[0] |= (1 << (USB_HP_CAN_TX_IRQChannel & 0x1F));
// enable interrupt
//接收中断使能
NVIC->ISER[0] |= (1 << (USB_LP_CAN_RX0_IRQChannel & 0x1F));
//初始化模式, 禁止报文自动重传
CAN->MCR = (CAN_MCR_NART | CAN_MCR_INRQ); // init mode disable auto. retransmission
// Note: only FIFO 0 transmit mailbox 0 used
// FIFO 0 msg pending Transmit mbx empty
//FIFO0发生溢出的情况FIFO 0的FOVR位被置’1’时,产生中断。
//发送邮箱0变为空,RQCPx位被置’1’时,产生中断。
CAN->IER = (CAN_IER_FMPIE0 | CAN_IER_TMEIE);
/* Note: this calculations fit for PCLK1 = 36MHz */
//设置波特率
brp = (brp / 18) / 500000; // baudrate is set to 500k bit/s
/* set BTR register so that sample point is at about 72% bit time from bit start */
/* TSEG1 = 12 TSEG2 = 5 SJW = 4 => 1 CAN bit = 18 TQ sample at 72% */
CAN->BTR &= ~((( 0x03) << 24) | (( 0x07) << 20) | ((
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1160 2008-09-23 09:20 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\Abstract.txt
文件 6517 2009-08-02 15:07 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\BinType.h
文件 11412 2017-11-27 20:48 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\CAN.c
文件 1892 2008-09-23 09:20 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\CAN.h
文件 2014 2011-06-10 13:34 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\CAN.Opt
文件 7604 2010-12-20 17:42 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\CAN.Uv2
文件 84212 2011-06-06 20:22 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\CAN.uvopt
文件 45879 2011-06-05 12:35 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\CAN.uvproj
文件 3652 2017-11-27 20:48 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\CanDemo.c
文件 5044 2008-09-23 09:20 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\CAN_Simulate.ini
文件 3349 2009-10-20 23:53 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\config.h
文件 6507 2009-10-02 02:48 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\MyType.h
文件 479 2011-01-31 20:48 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\out\ObjRAM\CanDemo.sct
文件 19 2011-01-31 20:52 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\out\ObjRAM\ExtDll.iex
文件 479 2011-06-10 13:34 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\out\ObjSim\CanDemo.sct
文件 1258 2009-10-18 21:22 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\RAM.ini
文件 11307 2008-09-23 09:20 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\STM32F10x.s
文件 308842 2010-12-21 08:53 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\STM32_Init.c
文件 1185 2009-01-23 16:51 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\STM32_Init.h
文件 8609 2009-01-23 16:51 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\STM32_Reg.h
文件 326 2011-02-10 20:55 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\说明.txt
目录 0 2016-07-07 18:38 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\out\LstFlash
目录 0 2016-07-07 18:38 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\out\LstRAM
目录 0 2016-07-07 18:38 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\out\LstSim
目录 0 2016-07-07 18:38 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\out\ObjFlash
目录 0 2017-11-27 20:47 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\out\ObjRAM
目录 0 2017-11-27 20:47 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\out\ObjSim
目录 0 2017-11-27 20:47 BHS-STM32 实验29-CAN通讯(直接操作寄存器)\out
目录 0 2017-11-27 20:47 BHS-STM32 实验29-CAN通讯(直接操作寄存器)
----------- --------- ---------- ----- ----
............此处省略2个文件信息
相关资源
- STM32的ADC模数转换(库函数),亲测可
- STM32的SD卡程序,亲测可用
- STM32的FATFS程序,亲测可用
- STM32的图片显示程序,亲测可用
- STM32的电容触摸按键程序,亲测可用
- stm32f103zet6液晶显示实验
- STM32+8266+连接云平台源码.zip
- STM32 矩阵键盘扫描
- STM32蓝牙控制LED
- STM32F407 GPIO LED点亮例程
- STM32f407核心板电路AD原理图和PCB图
- 基于stm32的小车红外避障
- STM32F103C8T6使用ULN2003模块控制28BYJ-48电
- DS3231代码,STM32已测试通过
- 基于STM32的避障循迹寻光检测硬币小车
-
Jli
nk unlock for F1 - W5500视频资料代码讲解视频
- STM32F103ZET6库函数模板
- STM32F103 TIM1650驱动
- stm32产生方波信号
- stm32最全的封装库
- STM32H750 pcb封装altium
- STM32H750 原理图封装altium
- STM32嵌入式大棚系统设计
- stm32f205 IAP程序
- stm32f4xx_DFP2.14.0网盘链接.txt
- STM32系列芯片AD封装及元件库其中包括
- STM32F1灭火小车程序-灭火机器人
- STM32 dsp库
- STM32F103之实验2控制1个电机并采用编码
评论
共有 条评论