void Timer2_Init(void) //5微秒@12.000MHz
{
AUXR &= 0xFB; //定时器时钟12T模式
T2L = 0xFB; //设置定时初始值
T2H = 0xFF; //设置定时初始值
AUXR |= 0x10; //定时器2开始计时
IE2|=0x04; //使能定时器2中断
}
这个定时器不是传统51定时器。没有EA总中断TR0计数等直接位控制。那我要按键控制这个定时器2中断的关和开怎么配置了。
if(k1==0)
Delay(10);
if((k1==0)
IE2=0x04;
else
IE2=0x00;
#include <intrins.h>
sbit k1 = P1^0;
void Delay(unsigned char n)
{
while (n--)
{
_nop_();
_nop_();
}
}
void Timer2_Init(void) ////5微秒@12.000MHz
{
AUXR &= ~0x02; // 定时器2时钟12T模式
T2L = 0xFB; // 设置定时初始值
T2H = 0xFF; // 设置定时初始值
AUXR |= 0x10; // 定时器2开始计时
IE2 |= 0x04; // 使能定时器2中断
}
void main(void)
{
Timer2_Init();
while (1)
{
if (k1 == 0)
{
Delay(10);
if (k1 == 0)
IE2 = 0x04;
}
else
{
IE2 = 0x00;
}
}
}
看看这个对你有没有帮助
【以下回答由 GPT 生成】
问题描述:
需要在特定条件下配置STM32的定时器2中断的开关状态。具体条件如下:
解决方案:
// 配置定时器2的时钟为12T模式
AUXR &= 0xFB;
// 设置定时初始值
T2L = 0xFB;
T2H = 0xFF;
// 开始定时器2的计时
AUXR |= 0x10;
// 检测按键k1的状态
if (k1 == 0) {
// 延迟10毫秒
Delay(10);
// 使能定时器2中断
IE2 |= 0x04;
} else {
// 禁用定时器2中断
IE2 &= ~0x04;
}
请注意,以上代码为伪代码,具体的实现可能会根据您使用的STM32型号和开发环境而有所变化。请根据实际情况进行相应调整。