您好! 我目前正在参加一个嵌入式系统编程课程、我们最近让该器件完成我们的实验/任务。
本周的任务是使用按钮(BIT3)打开和关闭红灯、并使用头文件和类在单独的文件中编写代码。
不管怎样,我已经有了函数的工作方式,比如按下按钮-->打开,再次按下-->关闭。 我的问题是、我不理解如何使用我们得到的这个 timer.c 类。 我想它的用途是为了解决去抖问题?
这是 timer.c 的代码
#include "project.h" #include "led.h" #include "timer.h" #define divider 8 #define TMRC (DCO_FREQ / divider / 1000 * timer_interval) static tWord tickCount=0; void Timer_Init(){ BCSCTL1 = CALBC1_16MHz; DCOCTL = CALDCO_16MHz; BCSCTL2 = 0x0;// MCLK 时钟源 DCOCLK、MCLK 分频器1、SMCLK 源 DCOCLK、SMCLK 分频器1 //设置中断和计时器0 //启用定时器上的中断 CCTL0 = CCIE; //使用时钟 SMCLK、递增计数、8分频 TACTL = TASSEL_2 + MC_1 + ID_3; //设置比较值 CCR0 = TMRC; } __attribute__((interrupt (TIMER0_A0_Vector)) void Timer_A (void){ timer_run (); } tWord getTick (){return tickCount;} timer_run (){ tickCount++; led_Update (); }
tWord ==无符号整型
#define TMRC (DCO_FREQ /除法器/1000 * TIMER_INTERVAL)<--在这里,没有定义任何内容,我甚至不明白什么是 DCO_FREQ? 我认为 Timer_interval 必须由我实际执行的主函数进行设置。
LED_Update 由我编写:
void led_Update(){
if (status=LED_STAT_ON){
RED_LED_PORT |= RED_LED_PIN;
}
否则{
RED_LED_PORT &=~RED_LED_PIN;
}
按下按钮时状态变量会改变。
有人能给我一些关于如何使用计时器课程的提示吗? 我显然还在 主类中使用__enable_interrupt ()。 我已经注意到、如果我手动设置 CCR0 = 10000、Timer_A 中断方法运行得非常频繁;例如...。。
谢谢!