2个回答
展开全部
你要的是两个标志,而不是两个中断。
只要设置一个中断就可以了,
提供个思路:
可以设置定时器(TA、TB或者WDT都可以)中断时间为1ms,然后分别设置两个变量(如CountMS1、CountMS2)做累加;
然后判断这俩变量,if(CountMS1 == 3),置Flag3ms = TURE; if(CountMS2==1000),置Flag1s = TURE.
最后在你要用到的地方分别查询标志位就可以实现了
(查询完毕记得把标志位清零Flag3ms =FALSE)
只要设置一个中断就可以了,
提供个思路:
可以设置定时器(TA、TB或者WDT都可以)中断时间为1ms,然后分别设置两个变量(如CountMS1、CountMS2)做累加;
然后判断这俩变量,if(CountMS1 == 3),置Flag3ms = TURE; if(CountMS2==1000),置Flag1s = TURE.
最后在你要用到的地方分别查询标志位就可以实现了
(查询完毕记得把标志位清零Flag3ms =FALSE)
展开全部
方法很多:
看门狗定时器,定时器A,定时器B,基本定时器都可以实现
看门狗初始化:
WDT_MDLY_0_5;//0.5ms一次中断,3MS计数6次,
WDT_ADLY_1000;//1000ms计数一次
定时器A和B,更简单,假如你ACLK是32768,
CCRO=32768*3/1000,CCR1=32768
基本定时器初始化
BT_ADLY_1;//1MS一次,3MS计数3次
BT_ADLY_1000;//1S一次
上面是配置寄存器,然后写对应的中断程序就可以
看门狗定时器,定时器A,定时器B,基本定时器都可以实现
看门狗初始化:
WDT_MDLY_0_5;//0.5ms一次中断,3MS计数6次,
WDT_ADLY_1000;//1000ms计数一次
定时器A和B,更简单,假如你ACLK是32768,
CCRO=32768*3/1000,CCR1=32768
基本定时器初始化
BT_ADLY_1;//1MS一次,3MS计数3次
BT_ADLY_1000;//1S一次
上面是配置寄存器,然后写对应的中断程序就可以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询