|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
问题代码如下:
. o! j& m9 }" C% y0 h5 e; n5 `. z
5 v7 z0 D0 }: ]2 K' N0 D#pragma push
9 [2 _$ N6 M7 K9 N% \$ r7 Y/ \#pragma O0
' O8 T4 `* Y$ y1 c6 w" _; Qvoid rd_real_time(rt_uint8_t addr)8 B7 ]. {) u, W7 M I) C
{) B; I `# F" w3 ?8 ]
rt_base_t level0;. N+ o2 n& X* J6 U
level0 = rt_hw_interrupt_disable();//禁止中断
$ b/ c9 u3 p) y1 T5 s. T% r+ J1 q6 vsprintf(string,"通讯中...舍%u",addr+1);9 a# ` z- \, }: X. D
LCD_string(0x1FC0);//在迪文屏上显示
5 w$ R/ X' J4 y9 t& A$ W, nrt_hw_interrupt_enable(level0);//禁止中断% S4 h4 i) ]0 R* {/ k F" |& n
rt_thread_mdelay(50);//加个延时,防止看不见0 c9 i) [: p' X9 [1 }
COMM_OK[addr]=2;" C/ |5 P% I, F+ X
addr++;
/ ?, O5 |% K. tCOMM_addr3=addr;( l+ O7 l: J! @, y p: |* u$ e
// rt_kprintf("real time addr = %d\n",COMM_addr3);: L3 d8 Y, o8 d7 b6 @, m. s- T- Z
USART3_TX_BUF[0]=COMM_addr3;
$ d% L* R1 L! z, H8 ^USART3_TX_BUF[1]=0x03;2 p/ c0 L/ r; N7 E3 v( t0 X+ g# r$ B X" f
USART3_TX_BUF[2]=0x08;
% N" E @) G! xUSART3_TX_BUF[3]=0x00;
9 U8 T; p H+ q3 YUSART3_TX_BUF[4]=0x00;
% S; _' m! n7 `( M3 ZUSART3_TX_BUF[5]=0x50;$ y& ?' t2 I: N+ x( p* ~1 X
rt_uint16_t n=6;4 e1 p: V8 H( \" A4 x% J1 c/ ]# z
rt_uint16_t crc=CRC16(n,USART3_TX_BUF);
5 A- t4 X* c4 qUSART3_TX_BUF[n++]=(rt_uint8_t)(crc/256);
! p. K/ g+ N- V; d2 jUSART3_TX_BUF[n++]=(rt_uint8_t)(crc%256);
5 e: f) R: v( w' }: M) x//发送读取指令
- }" T- v3 R8 \7 S8 Yrt_device_write(env_dev,0,USART3_TX_BUF,n);
- {8 m9 U- x6 X. {}4 F! B. @0 S7 ~
#pragma pop* p) V, m9 r% G
# G, M8 [5 o( _+ n) H程序运行中发现,总能发送读取指令,没有问题,但是迪文屏的提示信息,经常发不出来,这是什么原因呢?我改了优化等级,加了关闭中断,还是一样。8 F/ N+ @1 g4 M9 S) b( c
|
|