|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
用的STM32F072的芯片,在调试CAN程序的时候,用JLINK仿真出来的发送状态永远不是CANTXOK。: P, x! j; o- A
CAN的寄存器显示为三个邮箱先后为Pending状态,之后就状态一直为无邮箱可用。芯片无法发出信号。求解啊,各位大神,难道是硬件的原因吗% A1 Y. A) H" z/ ^
int main(void)% M: t2 \3 i. K' Y
{
0 d- `# M+ L, C1 s/ g; a
& [$ ]5 a* K8 t+ f CanTxMsg TxMessage,TxMessage1;
+ @- }9 p0 e, Z4 B& k. P+ W0 u7 ? GPIO_InitTypeDef GPIO_InitStructure;
" E7 V7 H7 @0 W/ h) h CAN_InitTypeDef CAN_InitStructure;0 y+ T0 ~1 l9 A$ q9 [' g* F+ s: t
CAN_FilterInitTypeDef CAN_FilterInitStructure;: I5 U/ T* W/ M' ^
NVIC_InitTypeDef NVIC_InitStructure;
0 e$ W. `1 o% U: m //CAN¿úÏà1Øê±Öó8 v4 l0 o) r6 d
RCC_AHBPeriphclockCmd(RCC_AHBPeriph_GPIOA,ENABLE); //ê1ÄüGPIOAê±Öó
$ p% F) G7 b0 A1 ]3 }4 X" |$ B/ X# }
- [$ C* _& G. w: D, [( U) D* W RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN,ENABLE);//ê1ÄüCAN1ê±Öó 1 w$ _1 n7 j* n9 h; Q: N' O
! { r0 A( o6 u- _! [ //can1¿úòy½ÅÅäÖÃ
% {7 H `: i6 M, m5 a GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12;//3õê¼»ˉ
# V/ i N0 K5 W4 A5 b1 U GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//¸′óÃ1|Äü
2 Y: J2 {3 `: I, y# s5 ~ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //Ëù¶è
, P9 c7 W7 }, l) q$ i8 [- k% N GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //íÆíì¸′óÃêä3ö3 T9 R ]# X. ]: J* @
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //éÏà-
# B! H# T Q8 Z" ]- b5 R5 }5 x GPIO_Init(GPIOA,&GPIO_InitStructure);
. U/ W3 U- t# P7 b9 F! Y
- y5 ~) z5 ?' r) A! {( y" e GPIO_PinAFConfig(GPIOA,GPIO_PinSource11,GPIO_AF_0); 8 l9 O }- M: w3 X
GPIO_PinAFConfig(GPIOA,GPIO_PinSource12,GPIO_AF_0); & ^" k% D* u1 \
1 L2 f! Z2 m2 V, _0 ] //CAN1¿úμÄÏà1ØÅäÖà * A9 G1 ?, V. G0 B/ P7 p3 h5 t2 K
CAN_InitStructure.CAN_TTCM=DISABLE;
: ]. G' {, _4 v/ m6 u- B3 Q0 C CAN_InitStructure.CAN_ABOM=ENABLE;3 [0 j& D' k+ R" @, `8 n- [
CAN_InitStructure.CAN_AWUM=DISABLE;
7 \; I0 C! X% h: i CAN_InitStructure.CAN_NART=DISABLE;* V+ q* z. g7 |* k) l; E
CAN_InitStructure.CAN_RFLM=DISABLE;+ w; H0 y- \% \& D, R+ u6 S
CAN_InitStructure.CAN_TXFP=ENABLE; 3 `' x! }' I! E! v
CAN_InitStructure.CAN_Mode=CAN_Mode_Normal;
0 U0 u4 K# f p. p# j6 L CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;
) Z: p) Q& U/ v8 a. T; q1 m! ? CAN_InitStructure.CAN_BS1=CAN_BS1_10tq;4 |$ x' o4 _9 L4 C
CAN_InitStructure.CAN_BS2=CAN_BS2_7tq;# X$ U: V9 b# @+ E8 M1 C
CAN_InitStructure.CAN_Prescaler=4;3 h) j2 Q& Q- E( ^
8 y7 E6 d- i' }// CAN_InitStructure.CAN_Mode = CAN_Mode_LoopBack; // »Ø»·2aêÔÄ£ê½
8 O" w$ ~( d# N: ]$ S0 r4 p3 y& R* j( I: v% Y3 y# j$ T
CAN_Init(CAN,&CAN_InitStructure);
7 {+ ^! a; `7 U, |7 n4 _ /* CAN filter init */
- v" \0 F, U \0 v CAN_FilterInitStructure.CAN_FilterNumber=0;
1 k; b5 I5 R: c4 y/ H! ~ CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask; 5 X- z, t9 p# H+ C) v+ q6 S" P
CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; 6 B, M/ {) P9 P7 Q$ o' `
CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;- G/ Z- U; u9 t
CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
# K# Q" F$ P5 q' g4 l/ f CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;% j6 M# ?$ V: J( b8 u
CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
0 @8 J. y; N: ]. E CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;
* l2 x* ^. k6 s" e: M; k' J CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;/ D, L9 M$ }0 c, z& Y
CAN_FilterInit(&CAN_FilterInitStructure);! G9 e, M% K! D
& W7 e8 i3 m. l) H5 I$ G0 S
TxMessage.StdId = 0x12;
3 O0 v7 M1 i2 t7 [% r: o TxMessage.ExtId = 0x12;0 q7 T+ r& ^! ~/ k! D' r+ a
TxMessage.RTR = CAN_RTR_Data; //0x00000000;. c" D* k. T3 d2 M
TxMessage.IDE = CAN_ID_STD; //0x00000000;( p5 K3 z9 y5 V& V0 w
TxMessage.DLC = 8;
4 ^0 U, i) F; B& @ t TxMessage.Data[0] = 0x01;% A* r1 ^: g) S# s; ~2 a, p
TxMessage.Data[1] = 0x00;6 X/ M o9 W. \3 q3 @
TxMessage.Data[2] = 0x00;3 `5 s+ D E! C* S" Q5 A
TxMessage.Data[3] = 0x00;
, F/ ?/ ]3 L% m: R& q% r6 {, T' y TxMessage.Data[4] = 0x00;; [. e4 t" X! A& e+ k
TxMessage.Data[5] = 0x00;7 i$ v: _, `% G. e5 Z6 O( y( I- {
TxMessage.Data[6] = 0x00;; P& t8 V& Y, E! l/ R/ R
TxMessage.Data[7] = 0x00;
+ i9 s1 d3 x6 M. ? while (1)
2 k: ^8 [& o9 T; U {; |3 |2 r# g; O' [! o. w
GPIO_WriteBit(GPIOB,GPIO_Pin_9,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_9)));
& o- ^ E1 d. t% e6 u# Z# ` ii = 0x3fffff;
( O8 O' b* z) e: E CAN_Transmit(CAN, &TxMessage);
# G% b+ O0 }4 } while(ii--);
; Y$ v) W7 |2 S5 v4 Y. _* p8 T7 l
0 ]7 H! e( m; y3 f! C- p }/ M% K( I6 w3 [; B
}
/ [0 @& L/ A- [ |
|