AW32 音乐蜂鸣的问题[求助][求助]
- UID
- 145240
- 性别
- 男
|
AW32 音乐蜂鸣的问题[求助][求助]
大家好! 我用AW32的TPM1CH2定时器的通道2来做音乐蜂鸣。 但我遇到的问题是,TPM1的模值,在我的程序中是固定值0X64,用来做定时,也就是整个程序的时基。 而改变TPM1C2V,却不会产生不同频率的音乐蜂鸣。现在我用输出比较方式,由于不能改模值,所以蜂鸣只能输出一个音符,无法实现 1---7的音乐蜂鸣。 我的程序如下: void InitialTPM1(void) {TPM1SC = 0x0b; // 1 2 4 | 8 | 16 32 64 128 TPM1MODH = 0x00; TPM1MODL = 0X64; //time1 period is 200us TPM1SC = 0x4b;//53; //plus period is 2us }
void InitialBuzzer(void) { TPM1C2SC_CH2IE=0; TPM1C2SC = 0Xd4;// TPM1C2VH = 0x00; TPM1C2VL = 0x20; TPM1C2SC_CH2IE=1; }
我现在想用边沿PWM的方式来驱动蜂鸣,可现在即没有PWM波形输出,蜂鸣边声音都没有了。 void InitialBuzzer(void) { TPM1C2SC_CH2IE=0; TPM1C2SC = 0XF4;// TPM1C2VH = 0x00; TPM1C2VL = 0x20; TPM1C2SC_CH2IE=1; }
大家有没有好办法?定时器2我也巳经用掉了。 谢谢!
[此贴子已经被作者于2007-11-15 14:09:57编辑过] |
|
|
|
|
|
- UID
- 145240
- 性别
- 男
|
现在,用边沿PWM方式来驱动蜂鸣,也能有声音输出,但和以前一个只能是一个音符,无论如何改变TPM1C2V的值,都没作用,波形一样,声音也一样。一直是200US一个波形。好象PWM并没有根据TPM1C2V进行改变。
具体程序如下:
void InitialBuzzer(void)
{
TPM1C2SC_CH2IE=0; // 0 1 2 | 3 | 4 5 6 7
TPM1C2SC = 0x74;
TPM1C2VH = 0x00;
TPM1C2VL = 0x40; //time1 period is 200us
TPM1C2SC_CH2IE=1;
}
void interrupt INT_TPM1_CH2 (void) {
TPM1C2SC_CH2F = 0;
if(buzzer_number==0)
{
TPM1C2SC = 0x78;
buzzer_number=1;
}
else
{
TPM1C2SC = 0x74;
buzzer_number=0;
}
//TPM1C2VH = 0x00;
//TPM1C2VL = 0x64;
TPM1C2SC_CH2IE=1;
} |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
如果你用TPM的PWM功能的话,那么改变TPM1CV2就只能改变一个通道的占空比,而不能改变其周期。如果要改变周期的话,就要改变TPM的模数寄存器的值。 |
|
|
|
|
|