工具与软件:
我有两个问题。
1. TimerA 的 TimerCLK 的输出是 SMCLK 的一半。
分频器设置为1/1。 为什么会这样?
(例如:SMCLK 为16MHz、TimerCLK 为8MHz。)
2.我希望 TimerA 中断周期为8MHz、中断周期只有大约382kHz。
以下是源代码。
我想有一些奇怪的器件、如果您找到它们、请告诉我。
#include
#include
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void intializeMCU (void){
WDTCTL = WDTPW | WDTHOLD;//停止 WDT
CSCTL0 = 0xA500;
FRCTL0 = FRCTLPW | NWAITS_1;
//时钟系统设置
CSCTL0_H = CSKEY_H;//解锁 CS 寄存器
CSCTL1 = DCOFSEL_0;//将 DCO 设置为1MHz
//设置 SMCLK = MCLK = DCO、ACLK = VLOCLK
CSCTL2 = SELA__VLOCLK | SELS__DCOCLK | SELM__DCOCLK;
//每器件勘误表将分频器设置为4、然后再将频率更改为
//防止过冲瞬态导致超出规格的操作
CSCTL3 = DIVA__4 | DIVS__4 | DIVM__4;//将所有相应的 clk 源设置为4分频、以进行勘误操作
CSCTL1 = DCOFSEL_4 | DCORSEL;//将 DCO 设置为16MHz
//延迟~10us 以使 DCO 稳定。 60个周期= 20个周期缓冲区+(10us /(1 / 4MHz))
__delay_cycles (60);
CSCTL3 = DIVA__1 | DIVS__8 | DIVM__8;//将所有分频器设置为1以进行16MHz 操作
CSCTL0_H = 0;//锁定 CS 寄存器//锁定 CS 寄存器
//配置 GPIO
P1DIR |= BIT0;//将 P1.0设置为输出方向
P1OUT |= BIT0;//清除 P1.0输出锁存以显示定义的上电状态
P4DIR |=(BIT5 + BIT6);//将 P4.5设置为输出方向
P4OUT = 0x00;
P4OUT |=位5;
P4REN |=位5;
P3DIR |= BIT4;//将 P4.6设置为输出方向
P3OUT |=位4;
P3REN |=位4;
P3SEL0并且=位4;
P3SEL1 |=位4;
P1DIR |= BIT6;//将 P1.6设置为输出方向
P1OUT |=位6;
P1REN |=位6;
P1SEL0 |=位6;
P1SEL1 |=位6;
PM5CTL0 &=~Ω LOCKLPM5;//禁用 GPIO 加电缺省高阻抗模式
//激活以前配置的端口设置
// TimerA 設定*/
TA0CTL = TASSEL_2 + ID_0 + MC_1 + TAIE;
TA0CCTL0 = CCIS_0 + CCIE + OUTMOD_3;
TA0CCR0 = 1;
TA0EX0 = 0です。μ A
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
* Timer0_A0
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma VECTOR=TIMER0_A0_VECTOR
_interrupt void TIMER0_A0_ISR (void)
{
TA0CTL &=~μ H TAIFG;
P4OUT ^= BIT6;
}
int main (void)
{
intializeMCU();
_BIS_SR (GIE);
for (;;){
}
返回0
}