初级会员

- 积分
- 69
- 金钱
- 69
- 注册时间
- 2013-8-2
- 在线时间
- 0 小时
|
5金钱
大家好,我希望用定时器TIME4_CH3,TIME4_CH4的PWM功能分别产生不同频率,例如8000HZ和9000HZ,但用示波器观察所输出的波形均为相同的频率,不知道这个思路对吗?能够实现吗?下面是我的程序请大家给我看看,有什么问题,谢谢啦
一、主程序
int main(void)
{
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72); //延时初始化
TIM4_PWM_CH3_Init(); //不分频。PWM频率=72000/(8999+1)=8Khz
TIM4_PWM_CH4_Init(); //不分频。PWM频率=72000/(7999+1)=9Khz
while(1)
{
}
}
二、两个子程序
void TIM4_PWM_CH3_Init(void)
{
RCC->APB1ENR|=1<<2; //TIM4时钟使能
RCC->APB2ENR|=1<<3; //使能PORTB.8时钟
GPIOB->CRH&=0XFFFFFFF0; //PB.8输出,TIM4_CH3
GPIOB->CRH|=0X00000003; //复用功能输出
RCC->APB2ENR|=1<<0; //开启辅助时钟
TIM4->ARR=8999;//arr; //设定计数器自动重装值,PWM频率=72000/(8999+1)=8Khz
TIM4-> SC=0;//psc; //预分频器不分频
TIM4->CCMR2|=6<<4; //CH3 PWM3模式
TIM4->CCMR2|=1<<3; //CH3预装载使能
TIM4->CCR3=4000; //固定值占空比,形成方波;
TIM4->CCER|=1<<9; //CC3P 输入/捕获3输出使能
TIM4->CCER|=1<<8; //CC3E 输出使能
TIM4->CR1=0x0080; //ARPE使能
TIM4->CR1|=0x01; //使能定时器
}
void TIM4_PWM_CH4_Init(void)
{
RCC->APB1ENR|=1<<2; //TIM4时钟使能
RCC->APB2ENR|=1<<3; //使能PORTB时钟
GPIOB->CRH&=0XFFFFFF0F; //PB.9输出,TIM4_CH4
GPIOB->CRH|=0X00000030; //复用功能输出
RCC->APB2ENR|=1<<0; //开启辅助时钟
TIM4->ARR=7999; //设定计数器自动重装值,PWM频率=72000/(7999+1)=9Khz
TIM4-> SC=0; //预分频器不分频
TIM4->CCMR2|=6<<12; //CH4 PWM4模式
TIM4->CCMR2|=1<<11; //CH4预装载使能
TIM4->CCR4=4500; //固定值占空比,形成方波;
TIM4->CCER|=1<<13; //CC4P:输入/捕获4输出极性
TIM4->CCER|=1<<12; //CC4E:输入/捕获4输出使能
TIM4->CR1=0x0080; //ARPE使能
TIM4->CR1|=0x01; //使能定时器4
} |
|