找回密码
 立即注册
楼主: DHBT2023

屠龙刀AI32G12K128定时器问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-04 11:33:11

12

主题

124

回帖

521

积分

高级会员

积分
521
发表于 2024-9-25 17:41:36 | 显示全部楼层
while(1);我刚刚也发现了。定时器在while(1)内无法形成中断。在while(1)外却可以,就如楼上。但是既然是while(1)外,我先试一试效果,谢谢
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-04 11:33:11

12

主题

124

回帖

521

积分

高级会员

积分
521
发表于 2024-9-25 17:45:33 | 显示全部楼层
乘风*** 发表于 2024-9-25 17:14
主循环里设置P20 = 0,每次循环都会亮灯。
定时器1ms中断里面设置P20 = 1,每1毫秒灭一次灯。
这么快速的亮 ...

是++到5000ms才动作,不是1ms就动作
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-04 11:33:11

12

主题

124

回帖

521

积分

高级会员

积分
521
发表于 2024-9-25 17:47:46 | 显示全部楼层

你在在while(1)外面调用定时器,我主程序要在while(1)里面运行。怎么弄?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-04 11:33:11

12

主题

124

回帖

521

积分

高级会员

积分
521
发表于 2024-9-25 17:54:26 | 显示全部楼层

void main()
        {
        SYS_Ini();
        Timer0_Init();
                EA = 1;
                 P20 = 0;
                while (1)
                 {                  
                                if(t_a == 1) { t_a =0;  s_a++; }
                    if(s_a == 5000)  P20 =1;
                        }       
                }
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-04 11:33:11

12

主题

124

回帖

521

积分

高级会员

积分
521
发表于 2024-9-25 17:57:46 | 显示全部楼层
你这个确实可以。但是我是    P20 = 0 要在while (1)里面。定时中断。P20=1. 就是说。P20=0 和P20=1都要在while (1)里完成,,而不是一个在里面,一个在外面。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-04 11:33:11

12

主题

124

回帖

521

积分

高级会员

积分
521
发表于 2024-9-25 18:00:21 | 显示全部楼层
DHBT*** 发表于 2024-9-25 17:54
void main()
        {
        SYS_Ini();

这个定时器可以打开,但是这样写,我P20=1后,在循环里面无法再P20=0
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-04 11:33:11

12

主题

124

回帖

521

积分

高级会员

积分
521
发表于 2024-9-25 18:02:49 | 显示全部楼层
不过也是一种改程序的思路。我原理以为 定时器可以在while循环里,跳出循环中断一下,然后再进入循环运行。现在看来,我弄不好
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-04 11:33:11

12

主题

124

回帖

521

积分

高级会员

积分
521
发表于 2024-9-25 18:15:52 | 显示全部楼层
其实,程序满简单:检测温度,温度到 ,P20=0 驱动负载放水。 500ms后, 释放负载P20=1 。温度降低,继续检测温度,同时 P20要是1状态。。   但是都必须在while (1)里完成。我曾经想把程序写成两部分,没有成功。必须在while (1)里用一个中断去释放P20=1,让P20恢复到1状态。现在看起来在while (1)里要定时器去中断,是不行的。

点评

早说功能不就行了  详情 回复 发表于 2024-9-25 19:42
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-04 11:33:11

12

主题

124

回帖

521

积分

高级会员

积分
521
发表于 2024-9-25 18:16:44 | 显示全部楼层
我在while (1)里面无法打开定时器记数,
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:422
  • 最近打卡:2025-05-01 09:54:52
已绑定手机

19

主题

3190

回帖

4866

积分

论坛元老

积分
4866
发表于 2024-9-25 18:29:50 来自手机 | 显示全部楼层
Timer0_Init();不能放在while(1)里面会出问题的。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:31 , Processed in 0.139533 second(s), 102 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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