|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
问题代码如下:/ K. }: t2 g$ `: `5 z7 t) W2 R# y
: B @$ B" T8 }$ x( V#pragma push
4 \. y' I5 J) a5 o#pragma O0
0 {( y7 A. E9 n" ]0 f7 ?4 T# Pvoid rd_real_time(rt_uint8_t addr)$ P( X9 k7 O. |; C: l
{7 ^! ~" G' |+ a- s- e
rt_base_t level0;
+ Y0 Z/ y- [* ~% O# d# U8 o" [level0 = rt_hw_interrupt_disable();//禁止中断5 P# u0 o3 r+ Z/ i ^# J+ O: t
sprintf(string,"通讯中...舍%u",addr+1);
2 ]4 [/ X6 m+ f# c6 l/ WLCD_string(0x1FC0);//在迪文屏上显示
0 a+ O2 z% k5 x Crt_hw_interrupt_enable(level0);//禁止中断' {8 K# g! N3 b) L2 t
rt_thread_mdelay(50);//加个延时,防止看不见
A; a- E+ P$ e7 bCOMM_OK[addr]=2;
8 C+ U2 d0 g& v* g: ]4 y' G/ Raddr++;
" F2 J# b: m) s( T* |" TCOMM_addr3=addr;5 W9 S) r5 G' q9 z2 X& y, \
// rt_kprintf("real time addr = %d\n",COMM_addr3);1 i$ F' k8 ?" B5 z
USART3_TX_BUF[0]=COMM_addr3;7 R3 ?! P9 V+ ], @) |0 l
USART3_TX_BUF[1]=0x03;
# \- a* l V8 w3 GUSART3_TX_BUF[2]=0x08;
! P* z7 c0 ]& Q) f+ NUSART3_TX_BUF[3]=0x00;( F6 L# d: ?4 J: d% @; j
USART3_TX_BUF[4]=0x00;, } h" Z- V" o+ m; ?3 Z+ G
USART3_TX_BUF[5]=0x50;! U6 o! O9 a* [1 u8 P
rt_uint16_t n=6;
3 G) K3 v( M( c; crt_uint16_t crc=CRC16(n,USART3_TX_BUF);
/ d- T! o) _9 K) O9 n' `USART3_TX_BUF[n++]=(rt_uint8_t)(crc/256); z: G; v; V2 C. I1 z
USART3_TX_BUF[n++]=(rt_uint8_t)(crc%256);+ V e9 _! {4 l4 D
//发送读取指令+ M3 Q4 f" X2 X2 d- @' H
rt_device_write(env_dev,0,USART3_TX_BUF,n);8 _" R2 f% H& M: R1 N8 E& p6 ^
}- L8 U6 s& k4 ]4 m6 v/ q: N7 b
#pragma pop
9 q; j, {9 S% [/ u1 p& |+ t# b# E& e, \/ K& n4 C
程序运行中发现,总能发送读取指令,没有问题,但是迪文屏的提示信息,经常发不出来,这是什么原因呢?我改了优化等级,加了关闭中断,还是一样。$ R: d- g3 u9 L! R
|
|