EDA365电子论坛网

标题: 程序运行中发现读取指令没有问题但提示信息经常发不出来是什么原因呢? [打印本页]

作者: fanA    时间: 2022-10-18 15:47
标题: 程序运行中发现读取指令没有问题但提示信息经常发不出来是什么原因呢?
问题代码如下:
- r( j6 p. r/ `/ c. l
5 m, U+ z- _! G#pragma push
7 z$ w6 h: X9 U( }. `& q4 ~#pragma O0+ K7 s) y% c# i1 g! u
void rd_real_time(rt_uint8_t addr)
# b* U" N1 U& b# G' O7 l. k{
% ~2 J, c1 h6 b+ ^$ }: Xrt_base_t level0;1 ^9 i! t. ^% H3 |8 e* L9 r; o* P
level0 = rt_hw_interrupt_disable();//禁止中断
0 R6 {. @  L* N# s- q6 _sprintf(string,"通讯中...舍%u",addr+1);
  a, w& R$ d3 ]; `  _LCD_string(0x1FC0);//在迪文屏上显示
- I1 t  t3 q! w; r' J4 Prt_hw_interrupt_enable(level0);//禁止中断" k. b. b3 B  E* V5 a$ B
rt_thread_mdelay(50);//加个延时,防止看不见4 h, {7 T/ v- J  J
COMM_OK[addr]=2;
& `/ |/ O; o" y; o( [addr++;
; T7 `$ r$ Q* Q' J* [  d3 {+ Q( y: qCOMM_addr3=addr;% Q6 C9 z: S2 y) b9 m
// rt_kprintf("real time addr = %d\n",COMM_addr3);& S- k- E! c& N1 Q5 d
USART3_TX_BUF[0]=COMM_addr3;7 i+ k' `* \  @$ N2 _& ~1 z
USART3_TX_BUF[1]=0x03;
9 Y( m0 g. _* L( ?% J9 kUSART3_TX_BUF[2]=0x08;
# u% |3 d* C. j7 y9 N: x6 a' YUSART3_TX_BUF[3]=0x00;8 M( |# x" v+ k; s! u
USART3_TX_BUF[4]=0x00;
6 C# s+ m8 W& ~4 R! r) M% }USART3_TX_BUF[5]=0x50;# D: N8 \) A$ N% L+ S% L
rt_uint16_t n=6;
8 N6 M! ]$ [( @1 m' _rt_uint16_t crc=CRC16(n,USART3_TX_BUF);
3 z4 x6 U9 {# ~USART3_TX_BUF[n++]=(rt_uint8_t)(crc/256);+ D2 x: S% p$ }- q, w
USART3_TX_BUF[n++]=(rt_uint8_t)(crc%256);
* b& K% Y; {0 m  ]  x5 \//发送读取指令
+ V: y. O8 C9 |; x# {, ?4 [rt_device_write(env_dev,0,USART3_TX_BUF,n);
% t8 w" T1 C; W: K0 M}- l: j; Z0 R% a% N+ V
#pragma pop
5 {  x8 m) `: D/ I# T- }
9 B. P6 d; [, e5 _; [! Z程序运行中发现,总能发送读取指令,没有问题,但是迪文屏的提示信息,经常发不出来,这是什么原因呢?我改了优化等级,加了关闭中断,还是一样。- G4 u" \$ w5 @+ T; ^( A

作者: oewqe    时间: 2022-10-18 16:29
你说的是 LCD_string(0x1FC0);这一句执行不了吗,下面的代码都能正常执行?- H* w  s9 M( y4 o! a  ]
可以单步看看,另外看是不是LCD_string()函数内部代码的问题呢。
1 {/ c+ v+ z! v, X  W8 a
作者: oponi    时间: 2022-10-18 16:47
mcu平台有没有mpu功能,如果有的话,并且打开了dcache,屏幕数据放在对应的内存,则可能会有缓存一致性问题,导致屏幕数据不更新。/ g! Z/ f! A0 B' w





欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2