|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
问题代码如下:
' G7 Q' [! [ M, I0 |6 G! n7 K$ r% k7 P$ L5 L; p, w3 u \
#pragma push
6 ]: v1 I( W7 E2 R#pragma O0. z, v' p0 r8 t9 C$ o! B2 g
void rd_real_time(rt_uint8_t addr)
9 O2 p* V* E7 f$ ?{
( s# R: |2 f% S2 j8 @* ?& Ort_base_t level0;
+ ^' x) D9 F0 _% ~; w) z( olevel0 = rt_hw_interrupt_disable();//禁止中断
: m+ G: r- M3 j7 Y; ]- ~. Zsprintf(string,"通讯中...舍%u",addr+1);+ W; G7 b. U7 J$ D* y! Z* L
LCD_string(0x1FC0);//在迪文屏上显示$ n9 ?/ z0 C4 W7 J! f; P
rt_hw_interrupt_enable(level0);//禁止中断2 o* W8 b+ x4 S2 L
rt_thread_mdelay(50);//加个延时,防止看不见/ f% F# a% M! b. u! W
COMM_OK[addr]=2;
( O) Y9 ~0 E) Z3 J P/ ~8 Baddr++;
9 G8 Y7 ~1 Q! K4 ECOMM_addr3=addr;2 [" F$ P4 w& a$ u- L9 U6 b, S
// rt_kprintf("real time addr = %d\n",COMM_addr3);9 t o/ R% _% D" x$ V$ g+ O3 o
USART3_TX_BUF[0]=COMM_addr3;
8 j0 I3 q( @+ d; w$ Y: NUSART3_TX_BUF[1]=0x03;" K: G) E6 s8 c5 A" [
USART3_TX_BUF[2]=0x08;& r2 ^# g/ M5 a. e
USART3_TX_BUF[3]=0x00;' k# G+ G8 |: ?4 t; b' }
USART3_TX_BUF[4]=0x00;
3 n) ~4 K9 g% Q: h6 P+ yUSART3_TX_BUF[5]=0x50;
' P& ]: Q/ w. G" ]8 e& _ ?rt_uint16_t n=6;
7 w* B' n' h' r3 `. x, ^rt_uint16_t crc=CRC16(n,USART3_TX_BUF);
7 u% w' m9 R* l& E) K5 {( lUSART3_TX_BUF[n++]=(rt_uint8_t)(crc/256);* l8 D8 g# @( t# |" w9 ~- ]! u
USART3_TX_BUF[n++]=(rt_uint8_t)(crc%256);5 e4 u5 P0 g: z) ? x
//发送读取指令/ g7 J1 ~- d) \' I& e
rt_device_write(env_dev,0,USART3_TX_BUF,n);* `8 a1 t; u" N
}2 y4 D- n9 e1 k, F% c" }
#pragma pop
1 I% [0 \* Z( i: J5 [
+ j( e4 d [# r: ~! X Y程序运行中发现,总能发送读取指令,没有问题,但是迪文屏的提示信息,经常发不出来,这是什么原因呢?我改了优化等级,加了关闭中断,还是一样。
& A) Q4 B1 v2 S9 s g1 ?' U& y |
|