資源簡介
STM32的CAN通訊(直接操作寄存器),親測可用。內(nèi)有詳細的注釋和文檔。很好的學習資料。

代碼片段和文件信息
/*----------------------------------------------------------------------------
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發(fā)送消息郵箱
CAN_msg???????CAN_TxMsg;
//?CAN?message?for?receiving???
//CAN接收消息郵箱???????????????????????
CAN_msg???????CAN_RxMsg;??????????????????????????????????????????????????????????
//?CAN?HW?ready?to?transmit?a?message
//發(fā)送就緒標志
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
??//啟用復(fù)用功能的時鐘
??RCC->APB2ENR?|=?RCC_APB2ENR_AFIOEN;
??//?reset?CAN?remap
??//復(fù)位CAN重新映射
??AFIO->MAPR???&=?0xFFFF9FFF;
??//???set?CAN?remap?use?PB8?PB9
??//設(shè)置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復(fù)用推挽輸出
??GPIOB->CRH?&=?~(0x0F<<4);
??GPIOB->CRH?|=??(0x0B<<4);?
??//?enable?interrupt
??//發(fā)送中斷使能
??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發(fā)生溢出的情況FIFO?0的FOVR位被置’1’時,產(chǎn)生中斷。
??//發(fā)送郵箱0變?yōu)榭眨琑QCPx位被置’1’時,產(chǎn)生中斷。
??CAN->IER?=?(CAN_IER_FMPIE0?|?CAN_IER_TMEIE);????
??/*?Note:?this?calculations?fit?for?PCLK1?=?36MHz?*/
??//設(shè)置波特率
??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個文件信息
評論
共有 條評論