|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
用的STM32F072的芯片,在调试CAN程序的时候,用JLINK仿真出来的发送状态永远不是CANTXOK。
! ~8 P; X9 k7 K) `& cCAN的寄存器显示为三个邮箱先后为Pending状态,之后就状态一直为无邮箱可用。芯片无法发出信号。求解啊,各位大神,难道是硬件的原因吗, d. R5 O4 d; m- [+ I! ?& }* T, U) Y
int main(void)" F- ~- k o1 O! y8 L
{
0 R5 ~0 q/ }% Z8 C& q, X
. b( P2 f! p1 ]3 N. E! D# i CanTxMsg TxMessage,TxMessage1;
: d: }+ f! y) C( I6 F. J GPIO_InitTypeDef GPIO_InitStructure;" k$ U, \ [* a6 b" f* l3 F3 V# p
CAN_InitTypeDef CAN_InitStructure;
% @8 N' |3 V! A CAN_FilterInitTypeDef CAN_FilterInitStructure;
9 J1 ?* k6 p4 T0 G \9 m) w NVIC_InitTypeDef NVIC_InitStructure; ?+ q) V9 d0 i9 T# @1 G' W2 |& h( y
//CAN¿úÏà1Øê±Öó* O9 c# W6 h. W3 Y g
RCC_AHBPeriphclockCmd(RCC_AHBPeriph_GPIOA,ENABLE); //ê1ÄüGPIOAê±Öó2 D# V6 A- w1 B0 |! }8 b
2 i# y7 u; p& L7 v' E4 r: k RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN,ENABLE);//ê1ÄüCAN1ê±Öó ) K; }1 n R9 D5 K! U; J9 D7 E4 B$ |
- {5 E4 s4 v' E% Z4 ?0 l% @
//can1¿úòy½ÅÅäÖÃ* U- s5 V& n! p. P6 g X2 I9 Y
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12;//3õê¼»ˉ, D$ Q& e& P, m- C
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//¸′óÃ1|Äü- D3 L9 @1 H" Z' a
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //Ëù¶è
2 Y2 q+ s! O# ~* B GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //íÆíì¸′óÃêä3ö! b4 _6 m8 T4 E4 h" h
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //éÏà-
# k" r+ R% {9 ]! f( G) q; _ GPIO_Init(GPIOA,&GPIO_InitStructure);
9 r0 r+ Z5 \& A$ ^
- r7 g9 y' n4 X* R9 `8 U GPIO_PinAFConfig(GPIOA,GPIO_PinSource11,GPIO_AF_0);
3 v3 G4 N$ X0 W& K# C1 B e GPIO_PinAFConfig(GPIOA,GPIO_PinSource12,GPIO_AF_0);
, S) O+ {& U/ s& a$ {) o/ r2 \ " T9 N/ @( |$ ~+ K* f
//CAN1¿úμÄÏà1ØÅäÖà 5 S4 ?" z, v0 w A9 X
CAN_InitStructure.CAN_TTCM=DISABLE;
! w c, _+ V3 c/ `6 I* o: f CAN_InitStructure.CAN_ABOM=ENABLE;6 [/ [4 R' D1 o+ g2 J% B
CAN_InitStructure.CAN_AWUM=DISABLE;
9 }0 }- a/ L6 M/ O; |! E9 {, T CAN_InitStructure.CAN_NART=DISABLE;" y S, T% S( a. P/ z" x3 Q9 f& E) j
CAN_InitStructure.CAN_RFLM=DISABLE;2 V' M* p8 A% _& a9 ]; f
CAN_InitStructure.CAN_TXFP=ENABLE;
$ f0 G8 y7 w( ]# U CAN_InitStructure.CAN_Mode=CAN_Mode_Normal;/ O: v2 B4 s5 n* g1 i% B1 k) h& ^+ n
CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;
h4 ~( E6 J3 z6 q, X% K8 j CAN_InitStructure.CAN_BS1=CAN_BS1_10tq;
8 E% c* A R5 n# Q CAN_InitStructure.CAN_BS2=CAN_BS2_7tq;
+ l7 F6 {4 J( B3 B5 k7 S CAN_InitStructure.CAN_Prescaler=4;$ ?; q) f7 g r( B2 R. W
6 w1 Q! [ J" W- a# {- l# t" U% ]// CAN_InitStructure.CAN_Mode = CAN_Mode_LoopBack; // »Ø»·2aêÔÄ£ê½
& E% k9 l$ d3 M5 r" H( b# j0 o
- _/ Z5 }4 m; H, F5 {: u CAN_Init(CAN,&CAN_InitStructure);& T! J9 y3 S# \$ K
/* CAN filter init */
+ q0 I4 H/ e% O& ^, L r4 X CAN_FilterInitStructure.CAN_FilterNumber=0;
, L% ~/ J( t9 g! v& b# a8 X) h# ] CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask; 8 C4 _+ z, n& T1 r
CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; 5 I5 x5 w4 x4 o, F2 S$ v5 v5 O
CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;
" Y! ^3 K* e* Q: Z! n6 K CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
% P( S" A5 N' m' F CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;: `% N; a( s# v8 r8 T
CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
. `9 P6 F4 m( z( o# | CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;
" u0 [* g4 ?6 N CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;2 [/ k; q# t( A: Z7 _
CAN_FilterInit(&CAN_FilterInitStructure);; I! G5 o! |6 }% U& G6 {
& t) ~2 m1 n- V
TxMessage.StdId = 0x12;
3 c; {* e0 _& m: F M) n4 L TxMessage.ExtId = 0x12;
9 l; {* i- y& f! ^- \. x: H TxMessage.RTR = CAN_RTR_Data; //0x00000000;; ^1 p4 j( G4 t* w( J7 T) Y
TxMessage.IDE = CAN_ID_STD; //0x00000000;
7 \0 j* m5 }2 e! _3 x5 f TxMessage.DLC = 8;# [9 z2 Q& d; B
TxMessage.Data[0] = 0x01;8 {* \4 f1 q3 |1 x5 f: }
TxMessage.Data[1] = 0x00;9 j/ u- L! s0 G3 n+ j
TxMessage.Data[2] = 0x00;
1 x5 ]& T ]; u: h. c" D TxMessage.Data[3] = 0x00;+ q0 H: L z) _" Y
TxMessage.Data[4] = 0x00;# M& Z8 R4 d- W; w- Z5 u& {
TxMessage.Data[5] = 0x00;$ k2 w) D& {% R& B* R
TxMessage.Data[6] = 0x00;
# K( }, f8 d( g TxMessage.Data[7] = 0x00;
3 |- m3 a$ h. e while (1)
`. J. G& W% L- ]* V" K7 ^% I% `) Q/ r/ O {
1 `) U2 q& o c) b GPIO_WriteBit(GPIOB,GPIO_Pin_9,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_9)));7 N0 V0 \! S* I9 J0 m1 {0 i
ii = 0x3fffff;3 l- x6 M* K- l- ^, P/ w% C6 o
CAN_Transmit(CAN, &TxMessage);# J5 U; L+ t( E- N6 U9 a
while(ii--);4 Q# X# I4 K U5 p5 B4 }
/ C9 u+ X" M3 V } N$ Y1 h+ o/ I i
}8 v+ z) g) ?, h+ r% \
|
|