迪文科技论坛

 找回密码
 立即注册
搜索
查看: 34|回复: 2

【提问】定时器中断中是否可以读写变量地址

[复制链接]

3

主题

16

回帖

80

积分

注册会员

Rank: 2

积分
80
发表于 昨天 13:32 | 显示全部楼层 |阅读模式
我在定时器2中断中加了一个按键扫描的代码,实际测试的时候,会导致同一界面的文本显示出现乱码,不确定是否可以在定时器中断中进行变量地址的操作
代码如下:

  1. /**
  2. * @brief 按键键值扫描,30ms获取一次键值,键值存放在gKey.curValue
  3. * 注意:需要定期执行此函数
  4. * @param timeInterval 调用此函数的周期,单位ms
  5. */
  6. void GUI_Key_Scan(u32 timeInterval)
  7. {
  8.     #define DF_KeyScanTimeInterval  30  //按键扫描间隔周期,单位ms

  9.     static u32 timeCnt = 0;

  10.     timeCnt += timeInterval;
  11.     if (timeCnt > DF_KeyScanTimeInterval)
  12.     {
  13.         timeCnt = 0;
  14.         sys_read_vp(DF_ADDR_Key,(u8 *)&gKey.curValue,1);  //获取按键键值
  15.     }
  16. }
  17. //定时器2中断服务程序,1ms一次
  18. void sys_timer2_isr()        interrupt 5
  19. {
  20.         TF2=0;//清除定时器2的中断标志位
  21.         
  22.         //精准延时处理
  23.         if(delay_tick)
  24.                 delay_tick--;

  25.     GUI_Key_Scan(1);
  26. }
复制代码



回复

使用道具 举报

3

主题

16

回帖

80

积分

注册会员

Rank: 2

积分
80
 楼主| 发表于 昨天 13:37 | 显示全部楼层
好像是不能放在定时器中断里读写VP地址,我把GUI_Key_Scan(1);放到main里面就可以了   但是不知道为什么不行?是因为VP读写比较耗时?
回复

使用道具 举报

0

主题

342

回帖

2369

积分

金牌会员

Rank: 6Rank: 6

积分
2369
发表于 昨天 15:14 | 显示全部楼层
不允许这么操作,读写vp会写特殊寄存器,不能在中断里跑。
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2025-8-30 10:45 , Processed in 0.023872 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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