|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
问题代码如下:
' G& M7 W2 W% p, v) Q
/ c3 w: H. \# b; X#pragma push
s' s8 G7 \$ ?$ Y" o& |$ i#pragma O0/ Z: ^2 }: K1 }6 `
void rd_real_time(rt_uint8_t addr)' A" H4 E) N: ?
{6 {) h1 ^: q4 B& [* k
rt_base_t level0;
* M0 T# @) b& i/ g1 \8 i8 @. Zlevel0 = rt_hw_interrupt_disable();//禁止中断
) j: Z. r6 O2 V# ]sprintf(string,"通讯中...舍%u",addr+1);
4 I) l1 L, E0 E! ?# gLCD_string(0x1FC0);//在迪文屏上显示
D9 c! T' L+ {9 u& B3 a% @rt_hw_interrupt_enable(level0);//禁止中断
v; K _1 J; f: `) Irt_thread_mdelay(50);//加个延时,防止看不见
+ I1 ^' s2 w3 ]4 T6 X$ ZCOMM_OK[addr]=2;
" D$ V7 |$ V3 Z7 G; H! N$ haddr++;
6 z7 @0 C# {/ jCOMM_addr3=addr;9 `+ p' E6 @5 d! J: q- V q* P
// rt_kprintf("real time addr = %d\n",COMM_addr3);% ^8 @* O8 z, p2 v
USART3_TX_BUF[0]=COMM_addr3; Z$ q7 J b9 w; S# o0 L& S
USART3_TX_BUF[1]=0x03;9 s/ J' ~2 ^. r. B
USART3_TX_BUF[2]=0x08;* ]! o& U8 z! K" |* m
USART3_TX_BUF[3]=0x00;
* X' P8 J6 D) k9 Y m6 z- WUSART3_TX_BUF[4]=0x00;
{( {1 l7 B l& R- NUSART3_TX_BUF[5]=0x50;0 {: ]4 F* A7 R% P$ N
rt_uint16_t n=6;2 j& m/ P) i: M/ M& O
rt_uint16_t crc=CRC16(n,USART3_TX_BUF);7 q# N3 ^" R' X [" ]2 J/ _
USART3_TX_BUF[n++]=(rt_uint8_t)(crc/256);3 ?& R: B. t. y+ A" E
USART3_TX_BUF[n++]=(rt_uint8_t)(crc%256);
2 U8 u4 Q- a; T# B//发送读取指令
! N2 s8 Y8 l" q1 X2 Q0 a' brt_device_write(env_dev,0,USART3_TX_BUF,n);$ l' V0 a- O1 j3 S
}# `1 F- V2 E, s$ w
#pragma pop
3 Q! ~/ t1 n6 M5 O9 C7 c* m' O' ^8 s
程序运行中发现,总能发送读取指令,没有问题,但是迪文屏的提示信息,经常发不出来,这是什么原因呢?我改了优化等级,加了关闭中断,还是一样。. {1 r& z, K8 ]$ Q
|
|