OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4911|回复: 9

请教一下各位高手 STM32 F103 TIM3中断里 LCD显示的奇怪问题? 有图

[复制链接]

7

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2015-10-24
在线时间
26 小时
发表于 2021-3-26 20:45:52 | 显示全部楼层 |阅读模式
30金钱
在中断里面 用LCD_ShowIntNum 显示 编码器的数值,结果出现了一个奇怪的现象,每次选择编码器后显示数字,数字的最后一个字就会
出现乱码,显示不完整,自己找了一下原因,现在发现 在中断里面显示每次都是最后显示的数字出问题,如代码中显示,第一个LCD_ShowIntNum 显示正确,怎么旋转编码器都ok,但第二个LCD_ShowIntNum显示的就肯定出现如图显示的乱码,感觉像是执行LCD显示时间不够,但是在中断函数最后加了delay延迟等带LCD显示完,也不行。
另外把第一个和第二个LCD_ShowIntNum互换前后,结果也是最后一个LCD_ShowIntNum显示出现乱码,这样LCD_ShowIntNum本身应该是没有问题的

发个帖子请各位高手指导一下,确实没招了,请各位不惜赐教,谢谢
  1. void TIM3_IRQHandler(void)
  2. {
  3.   /* USER CODE BEGIN TIM3_IRQn 0 */


  4.           if(LL_TIM_IsActiveFlag_CC1(TIM3) == SET)
  5.           {
  6.                 uwICValue2=LL_TIM_GetCounter(TIM3)/4;
  7.                 LL_TIM_OC_SetCompareCH1(TIM1, uwICValue2);
  8.             LCD_ShowIntNum(180,100,uwICValue2,sizeof(uwICValue2),WHITE,BLACK,32);
  9.             LCD_ShowIntNum(150, 20,22,sizeof(22),WHITE,BLACK,32);//显示测试用
  10.           }

  11.           LL_TIM_ClearFlag_CC1(TIM3);
  12.           LL_TIM_EnableIT_CC1(TIM3);


  13.   /* USER CODE END TIM3_IRQn 0 */
  14.   /* USER CODE BEGIN TIM3_IRQn 1 */

  15.   /* USER CODE END TIM3_IRQn 1 */
  16. }
复制代码


微信图片_20210326203434.jpg
微信图片_20210326203426.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2015-10-24
在线时间
26 小时
 楼主| 发表于 2021-3-26 21:04:29 | 显示全部楼层
另外补充一下,LCD走的是硬件SPI,全局就只开了这一个中断
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2021-3-27 02:44:47 | 显示全部楼层
帮顶
回复

使用道具 举报

7

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2015-10-24
在线时间
26 小时
 楼主| 发表于 2021-3-27 09:14:01 | 显示全部楼层

原子哥,这个问题你都不知道吗?
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2021-3-27 10:48:07 | 显示全部楼层
中断里面这么干肯定有问题
回复

使用道具 举报

4

主题

912

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4514
金钱
4514
注册时间
2019-9-4
在线时间
915 小时
发表于 2021-3-27 11:34:15 | 显示全部楼层
帮顶!!
回复

使用道具 举报

7

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2015-10-24
在线时间
26 小时
 楼主| 发表于 2021-3-27 13:10:54 | 显示全部楼层
三叶草 发表于 2021-3-27 10:48
中断里面这么干肯定有问题

但是我看网上的代码也有把LCD显示写在中断里面的情况啊,难道是需要特殊处理吗?
回复

使用道具 举报

7

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2015-10-24
在线时间
26 小时
 楼主| 发表于 2021-3-28 14:58:32 | 显示全部楼层
怎么没人知道这个问题吗/
回复

使用道具 举报

2

主题

57

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1092
金钱
1092
注册时间
2019-9-3
在线时间
155 小时
发表于 2021-3-29 11:13:52 | 显示全部楼层
LCD函数里面有延时?中断里面不能有延时啊。会不会是这个问题
回复

使用道具 举报

11

主题

2147

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4897
金钱
4897
注册时间
2015-1-10
在线时间
613 小时
发表于 2021-3-29 11:34:42 | 显示全部楼层
设个标志位,放main里面显示,中断里处理这种操作总会出问题的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-28 01:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表