新手上路
- 积分
- 39
- 金钱
- 39
- 注册时间
- 2020-7-27
- 在线时间
- 8 小时
|
tim3ch1无法输出pwm波形,仿真看起来tim3ch1通道是工作的,porta.6就是不输出。
帮我看一下哪里的问题
#include "dianjipwm.h"
#include "sys.h"
void TIM3_IRQHandler(void)
{
if(TIM3->SR&0X0001)
{
int a=0;
}
TIM3->SR&=~(1<<0);
}
void TIM3_Int_Init(u16 arr, u16 psc)
{
RCC->APB1ENR|=1<<1;
TIM3->ARR=arr;
TIM3->PSC=psc;
TIM3->DIER|=1<<0;
TIM3->CR1|=0X01;
MY_NVIC_Init(1,3,TIM3_IRQn,2);
}
void TIM3_PWM_Init(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<1;
RCC->APB2ENR|=1<<2;
GPIOA->CRL&=0XF0FFFFFF;
GPIOA->CRL|=0X03000000;
// GPIOA->ODR|=1<<6;
TIM3->ARR=arr;
TIM3->PSC=psc;
TIM3->CCMR1|=7<<4;
TIM3->CCMR1|=1<<3;
TIM3->CCER|=1<<0;
TIM3->CR1|=0<<4;
TIM3->CR1|=0X00000080;
TIM3->CR1|=0X00000001;
}
#ifndef __DIANJIPWM_H
#define __DIANJIPWM_H
#include "sys.h"
#define dianji TIM3->CCR1
void TIM3_Int_Init(u16 arr,u16 psc);
void TIM3_PWM_Init(u16 arr,u16 psc);
#endif
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "dianjipwm.h"
int main(void)
{
u16 led0pwmval=0;
u8 dir=1;
Stm32_Clock_Init(9);
//uart_init(72,115200); //??????115200
delay_init(72); //?????
//????LED???????
//TIM3_Int_Init(899,0);
TIM3_PWM_Init(899,0); //????PWM??=72000/(899+1)=80Khz
while(1)
{
delay_ms(10);
if(dir)
{led0pwmval++;}
else {led0pwmval--;}
if(led0pwmval>300){dir=0;}
if(led0pwmval==0){dir=1; }
dianji=led0pwmval;
}
}
|
|