|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
问题代码如下:
+ n# v' Z3 \0 @8 y& c
5 d: v' A3 a" R! o#pragma push
1 M* Z- A6 V2 [0 M! I9 L9 P6 N#pragma O0
" R3 [6 `8 Z. t4 R9 @ Bvoid rd_real_time(rt_uint8_t addr)
5 W& W: e9 _5 A5 Z{% Q$ E) c& j, U! a% i6 |# p5 U
rt_base_t level0;
. B+ b6 b, q+ _8 q6 l- W$ i5 Y& o3 ?, plevel0 = rt_hw_interrupt_disable();//禁止中断
, X: V/ s% l; y {( P; Q' d; Dsprintf(string,"通讯中...舍%u",addr+1);
@6 V/ v* g- Q/ L, DLCD_string(0x1FC0);//在迪文屏上显示
! K; N: S4 {/ B! W* \rt_hw_interrupt_enable(level0);//禁止中断
$ |& e3 `; e5 @6 D. j8 q9 ~$ Nrt_thread_mdelay(50);//加个延时,防止看不见
+ }: A3 M: D! h( C$ x% Y: OCOMM_OK[addr]=2;2 u0 v. a- W, s/ u2 C2 ^
addr++;
7 F6 _3 X# b* e" Q( h5 \COMM_addr3=addr;
. h3 Y& g5 I4 ~2 a5 r// rt_kprintf("real time addr = %d\n",COMM_addr3);3 a* Q5 D, Y& K- C" a8 Q) u
USART3_TX_BUF[0]=COMM_addr3;* n0 v* e" @9 i! {8 q9 \
USART3_TX_BUF[1]=0x03;" ?* O, Z3 b9 _2 o* |) [+ _
USART3_TX_BUF[2]=0x08;
) z, C* q0 w9 v' t1 n& BUSART3_TX_BUF[3]=0x00;7 t2 u" Q0 f" a4 `' v# [" }: O
USART3_TX_BUF[4]=0x00;# M# X6 y6 d' o7 u. {( d" k
USART3_TX_BUF[5]=0x50;
( J8 R+ Z4 `; ^0 crt_uint16_t n=6;, |7 t+ R' m4 l
rt_uint16_t crc=CRC16(n,USART3_TX_BUF);
: i! @9 G7 x) W. Y9 oUSART3_TX_BUF[n++]=(rt_uint8_t)(crc/256);$ ]# A7 c* \9 w" q k7 {, u
USART3_TX_BUF[n++]=(rt_uint8_t)(crc%256);7 x8 I( S2 l" Y) ~# v, u. Q3 V
//发送读取指令
* a1 [- B0 q$ e* ^* krt_device_write(env_dev,0,USART3_TX_BUF,n);2 y: x$ `) l9 q1 E
}/ W, G1 f; R' I8 P! {
#pragma pop
) s. H3 T+ n9 \# q$ ^1 n/ ^0 O- A) v
; A* o4 J0 v- p2 `" K程序运行中发现,总能发送读取指令,没有问题,但是迪文屏的提示信息,经常发不出来,这是什么原因呢?我改了优化等级,加了关闭中断,还是一样。; Z- O. L% m* e. S, n4 Z$ F: j
|
|