📄 initcan.c
字号:
#include "config.h"
void InitCan( void )
{
/*------------config CAN as Mode 0------------*/
ECANCON = 0x00;
/*------ config CAN CONFIG STATUS----------*/
TRISB = ( TRISB|0x08 ) & 0xFB; /* RB2(CANTX) output , RB3(CANRX) input */
CANCON = 0x80; /* config mode */
while( ( CANSTAT & 0X80 ) == 0 ); /* waiting entry config mode */
/*------ config baud rate ----------*/
BRGCON1 = 0x0F; //Sync_Seg(bit7、6)=1TQ, BRP( BRGCON1 bit5~0 ) = 3, 则TQ = [ 2*( BRP + 1 )]/Fosc = 32/(8*4)MHz =1us
BRGCON2 = 0x90; //Phase_Seg1(bit5~3)=3TQ; Prog_Seg(bit2~0)=1TQ
BRGCON3 = 0x42; //Phase_Seg2(bit2~0)=3TQ; Norminal bit Time = 8TQ; bit Rate=125KHz
/*------config CAN work mode ----------*/
CANCON = 0x00;
while( ( CANSTAT & 0xE0 ) != 0 ); //wait to finish configuration
/*------config CAN interrupt ----------*/
PIR3 = 0x00; //clear all CAN interrupt flag
PIE3bits.RXB0IE = 1; //enable received interrupt of received buffer 0
IPR3bits.RXB0IP = 1; //the received interrupt of received buffer 0 has highest priority
PIE3bits.RXB1IE = 1;
IPR3bits.RXB1IP = 1;
INTCONbits.GIE = 1; //enable all interrupt
INTCONbits.PEIE = 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -