新手上路
- 积分
- 46
- 金钱
- 46
- 注册时间
- 2017-9-7
- 在线时间
- 15 小时
|
1金钱
阿波罗H7的板子 pwm 占空比为0的时候,输出异常
GPIO_Set(GPIOB,PIN1,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_MID,GPIO_PUPD_PU);//复用功能,上拉输出
GPIO_AF_Set(GPIOB,1,2); //PB1,AF2
GPIO_Set(GPIOB,PIN0,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_MID,GPIO_PUPD_PU);//复用功能,上拉输出
GPIO_AF_Set(GPIOB,0,2); //PB0,AF2
GPIO_Set(GPIOA,PIN6,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_MID,GPIO_PUPD_PU);//复用功能,上拉输出
GPIO_AF_Set(GPIOA,6,2); //PA6,AF2
GPIO_Set(GPIOA,PIN7,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_MID,GPIO_PUPD_PU);//复用功能,上拉输出
GPIO_AF_Set(GPIOA,7,2); //PA6,AF2
TIM3->ARR=arr; //设定计数器自动重装值
TIM3->PSC=psc; //预分频器不分频
TIM3->CCMR1|=1<<3; //CH1 预装载使能
TIM3->CCMR1|=3<<4; //CH1 匹配时翻转
TIM3->CCMR1|=1<<11; //CH2 预装载使能
TIM3->CCMR1|=3<<12; //CH2 匹配时翻转
TIM3->CCMR2|=6<<4; //CH3 PWM1模式
TIM3->CCMR2|=1<<3; //CH3 预装载使能
TIM3->CCMR2|=6<<12; //CH4 PWM1模式
TIM3->CCMR2|=1<<11; //CH4 预装载使能
TIM3->CCER|=1<<0; //OC1 输出使能
TIM3->CCER|=1<<4; //OC2 输出使能
TIM3->CCER|=1<<8; //OC3 输出使能
TIM3->CCER|=1<<12; //OC4 输出使能
TIM3->CCER|=1<<1; //OC3 低电平有效
TIM3->CCER|=1<<13; //OC4 低电平有效
TIM3->CR1|=1<<7; //ARPE使能
TIM3->CR1|=1<<0; //使能定时器3
int main(void)
{
Cache_Enable(); //打开L1-Cache
HAL_Init(); //初始化HAL库
Stm32_Clock_Init(160,5,2,2); //设置时钟,400Mhz
delay_init(400); //延时初始化
// uart_init(115200); //串口初始化
usart2_init(9600);
// usart3_init(115200);
// usart4_init(115200);
// usart5_init(115200);
// usart6_init(115200);
// usart7_init(115200);
// usart8_init(115200);
LED_Init(); //初始化LED
TIM3_Int_Init(500,10-1);
TIM3_PWM_Init(500-1,10-1); //10Mhz的计数频率,20Khz的PWM.
LED6(0);
LED0(0);
HAL_Delay(1000);
LED0(1);
LED6(1);
while(1)
{
commcu();
// testmode();
// LED0(0);
// LED1(1);
// LED7(0);
// HAL_Delay(10);
// LED0(1); LED1(0);
// LED7(1);
if((*(pw+0x02))>1500) *(pw+0x02)=0;
led0pwmval=(*(pw+0x02)-(*(pw+0x02)/25))/6;
if(led0pwmval>240) led0pwmval=240;
TIM3->CCR1 =led0pwmval; // pa6
TIM3->CCR2 =500-led0pwmval;//pa7
TIM3->CCR3 =led0pwmval;//pb0
TIM3->CCR4 =500-led0pwmval;//pb1
}
}
当 led0pwmval=0时,第一路pwm变成了占空比等于50的方波,剩余三路为低电平。
|
|