|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
用的STM32F072的芯片,在调试CAN程序的时候,用JLINK仿真出来的发送状态永远不是CANTXOK。
8 ^, _! i8 d' s+ CCAN的寄存器显示为三个邮箱先后为Pending状态,之后就状态一直为无邮箱可用。芯片无法发出信号。求解啊,各位大神,难道是硬件的原因吗
& u$ y1 }; U& f* t5 |) Z2 m" \int main(void)
; O- t; E/ v2 g4 i9 M5 }{- `( p. h0 [5 A3 a
3 A: w, g# `8 u1 l% T
CanTxMsg TxMessage,TxMessage1;
7 k2 U" z0 D& N! j0 t. w GPIO_InitTypeDef GPIO_InitStructure;# e9 T+ f( V" i0 n
CAN_InitTypeDef CAN_InitStructure;
* G3 B5 h3 D- i% S L2 R CAN_FilterInitTypeDef CAN_FilterInitStructure;
/ ~# Q+ t, I% Z. ^ NVIC_InitTypeDef NVIC_InitStructure; . V+ r- g( D; m2 {' t: \
//CAN¿úÏà1Øê±Öó8 r& E6 e1 M! `2 O6 k
RCC_AHBPeriphclockCmd(RCC_AHBPeriph_GPIOA,ENABLE); //ê1ÄüGPIOAê±Öó
5 C5 u4 P( ]1 U$ I& G8 r9 b# C" S; C' r9 }0 ?: g$ B
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN,ENABLE);//ê1ÄüCAN1ê±Öó : R+ L$ R. N! A( s; _
" L' H) [: b$ w& M
//can1¿úòy½ÅÅäÖÃ1 ?! ~; K+ L3 q- r7 t
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12;//3õê¼»ˉ
4 {5 A- L$ m8 m/ J) ? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//¸′óÃ1|Äü% l$ W4 l- F/ T
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //Ëù¶è
5 R. I: W9 K7 K! @ j GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //íÆíì¸′óÃêä3ö; E x0 s4 G! |( V% W8 C( _6 n: L
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //éÏà-8 q! w5 y; C: u& H
GPIO_Init(GPIOA,&GPIO_InitStructure);
4 ~' z! I8 x- W* T3 W 3 t, I# n' W* L, h
GPIO_PinAFConfig(GPIOA,GPIO_PinSource11,GPIO_AF_0); 4 w& c: I* C- {8 r
GPIO_PinAFConfig(GPIOA,GPIO_PinSource12,GPIO_AF_0); / c& M: q# P" ~- x2 X: i" `
. `, S: p8 p3 K- |1 F
//CAN1¿úμÄÏà1ØÅäÖÃ
* w% c+ S9 O, J" [- _ h# h' J CAN_InitStructure.CAN_TTCM=DISABLE;
$ y: O: l3 H1 P$ K$ P, g CAN_InitStructure.CAN_ABOM=ENABLE;# r L% T$ v( n5 i1 G
CAN_InitStructure.CAN_AWUM=DISABLE; * u8 b1 ^) m3 p* D* |' v2 _
CAN_InitStructure.CAN_NART=DISABLE;( r8 S; k$ ?' T" p6 k" t% B" k/ z
CAN_InitStructure.CAN_RFLM=DISABLE;
. n' {' H& p6 ?, s9 } CAN_InitStructure.CAN_TXFP=ENABLE; 7 ~ l9 \7 a6 Z6 O- c6 l
CAN_InitStructure.CAN_Mode=CAN_Mode_Normal;* g) x0 U/ o/ J5 w" o# U5 T
CAN_InitStructure.CAN_SJW=CAN_SJW_1tq; & B6 l5 x: z/ M! a8 g. s. D
CAN_InitStructure.CAN_BS1=CAN_BS1_10tq;
m9 s# d# q$ P* Y" A3 i CAN_InitStructure.CAN_BS2=CAN_BS2_7tq;7 t, m5 n# K: A
CAN_InitStructure.CAN_Prescaler=4;
7 G k& j: c) D; U6 x
3 E [8 j7 l3 p% Y; v& p// CAN_InitStructure.CAN_Mode = CAN_Mode_LoopBack; // »Ø»·2aêÔÄ£ê½# H+ D* Z* `1 ~
+ ^1 c4 g* r. U CAN_Init(CAN,&CAN_InitStructure);
3 Q8 {* @* ~" i ]8 _ /* CAN filter init */1 w4 S5 f$ F, ~
CAN_FilterInitStructure.CAN_FilterNumber=0;
! l$ |9 A8 ?1 r/ c CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask; 9 }+ E0 E' V5 e7 U
CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;
' ?: ?' g9 b- V% y CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;
$ V- {" \: V6 N CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
* E7 {/ T4 K/ R6 n( r0 o: b CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;
+ V+ N" i8 G: O CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;* ?6 I! q5 X% g0 a6 f
CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;
2 e# r7 Q6 ]% A2 A9 U% X CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;
% ]( x0 U( E) N" W CAN_FilterInit(&CAN_FilterInitStructure);6 K% w/ a6 B3 }$ u& R u$ X
" n- N' M, L# T' H; c! \) b& i
TxMessage.StdId = 0x12;
3 B4 [3 i5 c1 w/ | h4 ? TxMessage.ExtId = 0x12;. t1 [: z8 I* R6 G
TxMessage.RTR = CAN_RTR_Data; //0x00000000;
/ } c1 T3 Y; u2 q/ p TxMessage.IDE = CAN_ID_STD; //0x00000000;& p: P- g- |8 I& d3 E& L7 }9 q
TxMessage.DLC = 8;( T$ c' s ]8 U5 P5 l$ l
TxMessage.Data[0] = 0x01;
* l2 P4 X& q, D1 I, K- t1 o TxMessage.Data[1] = 0x00;
. g. r/ e: g# A8 N0 e TxMessage.Data[2] = 0x00;; x. V4 w/ x$ L& C4 k$ k9 `
TxMessage.Data[3] = 0x00;
' A3 I# ~3 y# Q) t0 ]. J8 v5 O TxMessage.Data[4] = 0x00;1 q3 j- W- `" [5 X5 L
TxMessage.Data[5] = 0x00;
( u2 _& r' e$ s% E, o# }: ? TxMessage.Data[6] = 0x00;; i0 ?6 L8 e( s- s
TxMessage.Data[7] = 0x00;% @+ E0 X/ X; _& D% M
while (1)+ K1 s: O2 V6 M9 H8 z( H! h
{
9 G- i; {( h+ e% c9 h1 M3 T- T GPIO_WriteBit(GPIOB,GPIO_Pin_9,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_9)));8 w4 G. q7 `8 [# H( T
ii = 0x3fffff;
0 r- e" t! r* b; N, A* f6 H CAN_Transmit(CAN, &TxMessage);2 u5 T; x4 p7 B& [7 Q6 X d/ R! A y
while(ii--);
: D" W7 D4 U- M- e) \ 6 j3 C2 c& y6 m& v* e9 r3 q' X2 Y
}
( u2 C3 l0 w" \8 X- q}
6 v. f: D( G4 B |
|