|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
问题代码如下:' r; G( g6 P3 R3 S- @
' t! E/ t7 C! f$ t
#pragma push: w/ w! Q2 ~9 H7 A6 c+ s
#pragma O0
4 A/ o, M* N/ l8 V7 R' ]2 wvoid rd_real_time(rt_uint8_t addr)
8 ^# |7 b/ C- P; o, g1 [2 t{& S: w3 i* o4 X- K; d
rt_base_t level0;! X& `$ y' c% a5 b1 C: }
level0 = rt_hw_interrupt_disable();//禁止中断/ w/ k' v- ~. F+ s
sprintf(string,"通讯中...舍%u",addr+1);/ h! E* ?' [6 @' E. k- _4 u
LCD_string(0x1FC0);//在迪文屏上显示' D* ~7 ?5 A ]* U9 w( j
rt_hw_interrupt_enable(level0);//禁止中断& l3 g* I) X0 A* \4 _
rt_thread_mdelay(50);//加个延时,防止看不见
% A/ q$ k# x& l4 J5 O0 QCOMM_OK[addr]=2;- X+ \3 T1 w9 j' ]1 i# Q l
addr++;
! a( e6 q- ]" c& nCOMM_addr3=addr;* }6 x% p% y8 c# X, `/ m
// rt_kprintf("real time addr = %d\n",COMM_addr3);
. Q! ~" d% l. BUSART3_TX_BUF[0]=COMM_addr3;
6 o; `6 t) l; uUSART3_TX_BUF[1]=0x03;; f& @, B0 N ?2 g- d
USART3_TX_BUF[2]=0x08;
" `6 e1 G6 r0 \+ _! k( R& y! r8 vUSART3_TX_BUF[3]=0x00;
) [- f% `* }8 `+ M9 e/ I: nUSART3_TX_BUF[4]=0x00;
8 g' j7 q. J9 C/ G9 A" h8 \9 rUSART3_TX_BUF[5]=0x50;5 v& G& N+ n: ^
rt_uint16_t n=6;
6 Y; h4 a) x3 ?0 ]5 vrt_uint16_t crc=CRC16(n,USART3_TX_BUF);: p: d5 H$ p8 P E
USART3_TX_BUF[n++]=(rt_uint8_t)(crc/256);& w& h0 x# F- N+ K1 ~- [
USART3_TX_BUF[n++]=(rt_uint8_t)(crc%256);
8 I2 w( p; \' y3 J//发送读取指令
4 f7 q) Y2 c7 i2 i! Zrt_device_write(env_dev,0,USART3_TX_BUF,n);
; W7 F8 y6 k7 w: T. g" _}. I y* G: ~& M. w
#pragma pop
; n* @7 d% G$ k
/ K1 [* F+ @* o" Q6 X) f程序运行中发现,总能发送读取指令,没有问题,但是迪文屏的提示信息,经常发不出来,这是什么原因呢?我改了优化等级,加了关闭中断,还是一样。" @; r$ }8 f/ W( N1 V
|
|