STM32--CAN總線應(yīng)運(yùn)
1. 硬件基礎(chǔ)
2. 軟件設(shè)計(jì)
在進(jìn)行軟件設(shè)計(jì)時(shí),我們首先來(lái)看這樣的一個(gè)結(jié)構(gòu)體:
typedef struct
{
} CanTxMsg;
這是定義一個(gè)can數(shù)據(jù)包的結(jié)構(gòu)體,即一個(gè)CAN數(shù)據(jù)包包含以上幾個(gè)部分。
注意: DLC定義發(fā)送數(shù)據(jù)的長(zhǎng)度,其范圍為:0~8。
下面我們來(lái)編寫CAN驅(qū)動(dòng):
對(duì)CAN模塊初始化
void CAN_CfgInit(void)
{
}
這里為can 定義一個(gè)專門的結(jié)構(gòu)體,便于數(shù)據(jù)處理:
typedef struct CAN_Socket CAN;
struct CAN_Socket {
};
數(shù)據(jù)打包,并且發(fā)送
void CAN_TxSocket( CAN *can_Socket )
{
}
接收函數(shù)放在中斷程序中處理:
void USB_LP_CAN1_RX0_IRQHandler(void)
{
}
這里只介紹CAN使用方法和主要驅(qū)動(dòng)程序,測(cè)試程序可自行設(shè)計(jì)。
本人的測(cè)試程序:
~INT8U SendBuff1[]="Hello";
INT8U SendBuff2[]="World";
INT8U SendBuff3[]="ADC= 255";
void main(void)
{
}
接收數(shù)據(jù),并在液晶上打印出來(lái)!
void Disp_CanReceveData( void )
{
}
評(píng)論