|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
问题代码如下:7 |5 _7 y$ h) K y4 [: Q
" p* f8 u- j, s- h#pragma push
- I: z# B9 x& D! @7 B! f. S#pragma O0
+ N, r4 q" e1 e j9 W! j2 Svoid rd_real_time(rt_uint8_t addr); H* i! s$ I+ ^- P
{- s5 ^# ~+ l' z
rt_base_t level0;
9 B6 h+ j l) t! Q" p1 B; Ilevel0 = rt_hw_interrupt_disable();//禁止中断
& w5 J9 W6 z# X; X& g8 Qsprintf(string,"通讯中...舍%u",addr+1);
- F( c2 }! i7 BLCD_string(0x1FC0);//在迪文屏上显示
3 z( ?) A: n+ `rt_hw_interrupt_enable(level0);//禁止中断2 J/ z+ ^8 O: c" T7 n: Z5 M
rt_thread_mdelay(50);//加个延时,防止看不见/ q8 B7 \& F: e6 T
COMM_OK[addr]=2;) n* G3 ^: G F! \8 ^+ Q
addr++;# N/ j9 e' e, w- Z( z. {+ Y
COMM_addr3=addr;0 X ?/ I5 e8 K) |
// rt_kprintf("real time addr = %d\n",COMM_addr3);
/ J" N( V# {& f- } L6 q; g5 oUSART3_TX_BUF[0]=COMM_addr3;! ~ |8 u3 a7 y' q) Q6 r2 X% |
USART3_TX_BUF[1]=0x03;
$ l; H. \: y- H( vUSART3_TX_BUF[2]=0x08;
9 H* b0 ^5 J; W4 Q: n. ]USART3_TX_BUF[3]=0x00;
$ ~3 X- P2 K) M6 pUSART3_TX_BUF[4]=0x00;2 i9 j8 l& S e5 b$ Z2 v- N
USART3_TX_BUF[5]=0x50;# @, y# {5 Z+ f6 X/ A9 X
rt_uint16_t n=6;
1 E) M$ c( e+ c1 F1 j, xrt_uint16_t crc=CRC16(n,USART3_TX_BUF);' U. ?, q. O& g7 M' ~; N: P
USART3_TX_BUF[n++]=(rt_uint8_t)(crc/256);$ D1 }* c2 | a
USART3_TX_BUF[n++]=(rt_uint8_t)(crc%256);7 ^/ O6 m( y* x+ V# H G( t
//发送读取指令
4 ]- R! g5 Q/ z6 m0 w& Jrt_device_write(env_dev,0,USART3_TX_BUF,n);
: Z9 _/ W9 i) X0 V" Y3 ~}
- B; O/ G9 {5 i( P, p) {6 x5 |, ?7 T#pragma pop% \$ h* A/ [& X! s
' j" [$ T: s2 k% @ H" K: I
程序运行中发现,总能发送读取指令,没有问题,但是迪文屏的提示信息,经常发不出来,这是什么原因呢?我改了优化等级,加了关闭中断,还是一样。% _! E1 M5 R. k, r$ p8 L4 O
|
|