做迪文的屏幕通过串口与STM32F103通讯,项目需求在通讯断开后需要在触摸屏上提示“通讯故障”字样,咨询了一下迪文售后(电话和QQ),给出肯定答复不支持这种功能,并且无法实现,当时没多想挂掉电话后,就继续写其他程序,后来无意中看到迪文官网给出的倒计时OS程序(之前接触过迪文OS),受到启发觉得通过OS的和SMT32F103之间的配合应该可以实现,然后动手实验了一下确实是可以的,成功后一万只草泥马喷腾而过(并内心窃喜)!为了证明贴出代码,给之后想实现该功能得工程师们提供一个参考,希望也能帮助大家!
CALL T5_S_MARK
END
T5_S_MARK:
MOVDR 0x20,R10,7 ;读取时间,R16对应得为 秒
CJNE R16,R245,R><R245 ;判断秒与时间时间是否相等,不相等跳转,相等执行下一条
GOTO COM_S
R><R245:
MOV R16,R245,1 ;当前秒写到R245
INC R250,0,1 ;1秒会执行到这里1次,R250自加1
IJNE R250,3,COM_S ;是否到3S,到3S判断是否产生中断故障
LDWR R0,0x2900 ;指定DGUS 变量地址
MOVXR R10 ,1, 1
IJNE R10,1,COM_FAIL ; 若产生中断故障跳到COM_FAIL
LDWR R0,0x2900 ;指定DGUS 变量地址
LDWR R10,0x0000
MOVXR R10, 0, 1
LDBR R250,0,1 ;R250=0
GOTO COM_S
COM_FAIL:
LDWR R10,58 ;待跳转故障页面,我做得是58
MOVRD R10,3,2
LDWR R0,0x2900 ;指定DGUS 变量地址
LDWR R10,0x0000
MOVXR R10, 0, 1
LDBR R250,0,1 ;R250=0
COM_S: RET
上面这段程序需要STM32F103通过串口向触摸屏得0X2900写0x0101数据,1S写入一次,写入时间过长会报故障,故障页面58;之所以是写入0x0101是我懒得区分R10和R11哪个是高8位哪个是低8位