|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
问题代码如下:
. u7 T9 D% G ^3 U7 o+ q7 b4 d @# }0 X: o
#pragma push N% l! m( b) C' i) W# c' n+ |1 g
#pragma O0
6 S- f& V5 P7 @* z: t' [1 W; Y/ ^void rd_real_time(rt_uint8_t addr). ?" F) U( l& e; @0 ]2 i) B
{
* T4 h$ S8 u7 |$ }# J$ Wrt_base_t level0;) y3 H, o- W, I7 C* m' |
level0 = rt_hw_interrupt_disable();//禁止中断5 A& c" U4 Q! P2 r/ l4 y
sprintf(string,"通讯中...舍%u",addr+1);$ b. P- S3 |& n* c" b# Q- T: ]
LCD_string(0x1FC0);//在迪文屏上显示; `* c2 p) z7 Y" K' [/ d
rt_hw_interrupt_enable(level0);//禁止中断
& J# H1 v; B, o$ jrt_thread_mdelay(50);//加个延时,防止看不见
7 L, O+ z) W8 o2 ?+ L1 g3 n( nCOMM_OK[addr]=2;' E. K5 R& g. u
addr++;; Y: ?: D/ w1 m1 W
COMM_addr3=addr;
, F2 L" G6 Z% v8 U3 P2 z// rt_kprintf("real time addr = %d\n",COMM_addr3);8 w9 X. i9 s1 z7 {
USART3_TX_BUF[0]=COMM_addr3;
) L5 `9 d d: {) O4 Q6 O9 L3 hUSART3_TX_BUF[1]=0x03;( x* |! x$ n" S T, j5 s
USART3_TX_BUF[2]=0x08;2 V" h ^# v* C5 I
USART3_TX_BUF[3]=0x00;! b/ T' e. b& b1 s5 I7 c
USART3_TX_BUF[4]=0x00;8 ?0 \8 ]% G% Q
USART3_TX_BUF[5]=0x50;7 b& k6 w! R+ K* \# O2 `( E) C: I
rt_uint16_t n=6;, C7 J! W ?4 E. u& S
rt_uint16_t crc=CRC16(n,USART3_TX_BUF);
# q3 y5 a, m2 l+ g6 p& J+ mUSART3_TX_BUF[n++]=(rt_uint8_t)(crc/256);- b6 e1 Q" U$ y: V u
USART3_TX_BUF[n++]=(rt_uint8_t)(crc%256);
0 H& X& Q3 {0 c4 E$ _//发送读取指令+ V+ t5 j; x A) `' |# J
rt_device_write(env_dev,0,USART3_TX_BUF,n);
; H; T7 {: g$ d% H0 ?, X! i }}
9 e w6 |) S% L) a0 s* K7 N# ~5 x- A#pragma pop0 c+ \, J& P7 X/ w" y
' ]4 s4 P& Z+ j! X# U% R
程序运行中发现,总能发送读取指令,没有问题,但是迪文屏的提示信息,经常发不出来,这是什么原因呢?我改了优化等级,加了关闭中断,还是一样。
+ w+ ^ B3 w4 ^6 y' k7 Y0 W% X |
|