|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
问题代码如下:
* }- P2 ?, r4 Y
& x3 b8 G& Z3 H- }0 Q4 w#pragma push# h X) X) j2 N
#pragma O0
, W; w) G8 X: F- N7 tvoid rd_real_time(rt_uint8_t addr)
. W/ c- F: }9 a0 B9 [3 p{: g8 S& E7 r' G& ^9 E+ i3 v; @
rt_base_t level0;; ]/ M; f* e' z9 x" k4 b+ \9 K
level0 = rt_hw_interrupt_disable();//禁止中断, ^4 @ D7 x3 h- I5 t! T
sprintf(string,"通讯中...舍%u",addr+1);; ?8 k5 I) m2 O L
LCD_string(0x1FC0);//在迪文屏上显示7 X# ]7 e& w) X) W. ?
rt_hw_interrupt_enable(level0);//禁止中断
, J9 h* E# v4 L7 krt_thread_mdelay(50);//加个延时,防止看不见
% \. v& ~& T$ DCOMM_OK[addr]=2;
6 Y$ Z$ I$ W+ B3 Y8 L& Zaddr++;
# M+ n& C3 u. X5 T1 _% cCOMM_addr3=addr;0 X1 M' y6 u$ K0 Q( ?
// rt_kprintf("real time addr = %d\n",COMM_addr3);& g8 \, Y$ T* D
USART3_TX_BUF[0]=COMM_addr3;' T* I5 O( q% Z
USART3_TX_BUF[1]=0x03;
) a/ ^" A% O' G) l7 FUSART3_TX_BUF[2]=0x08;5 N9 a' ?; \9 Y1 ?7 S' c
USART3_TX_BUF[3]=0x00;
8 o5 Y/ U, ?+ ^# v A! Z* oUSART3_TX_BUF[4]=0x00;7 r& p2 ^% p7 S" ?
USART3_TX_BUF[5]=0x50;
+ A8 ~; S9 s: E5 n3 t/ r2 X' Grt_uint16_t n=6;
6 F' S; |1 J6 w0 V$ T- W% n# krt_uint16_t crc=CRC16(n,USART3_TX_BUF);1 x! h& _" ^. l0 K" y$ E1 B' A
USART3_TX_BUF[n++]=(rt_uint8_t)(crc/256);; [$ K2 q9 H) y* b
USART3_TX_BUF[n++]=(rt_uint8_t)(crc%256); B! A' c& V& r9 Z. L
//发送读取指令" d, v( F0 N$ k2 e! g+ }
rt_device_write(env_dev,0,USART3_TX_BUF,n);
2 `# q0 l) P r% t9 q+ t}
. m J$ Y7 Z( F#pragma pop
# h7 v9 I3 J( M( ?* `! z" X7 F
! j& X3 ?9 ]: v( F3 ^' o% s6 R W程序运行中发现,总能发送读取指令,没有问题,但是迪文屏的提示信息,经常发不出来,这是什么原因呢?我改了优化等级,加了关闭中断,还是一样。
- u5 Q8 R! l0 L. _6 N2 ` |
|