新手上路
- 积分
- 49
- 金钱
- 49
- 注册时间
- 2016-10-17
- 在线时间
- 23 小时
|
1金钱
如题,刚刚接触单片机,用的是STM32f103Z的板子,想通过控制占空比,输出PWM波,但是没能完成。各位前辈能不能帮我看看哪里出了问题?新人第一次发帖,如果有什么不对的地方,希望大家指出,先谢过各位前辈了。
下面是我用到的程序。
#include "main.h"
int main(void)
{
static uint16_t k=0;
PWM_Configuration();
while(1)
{
delay_ms(20);
if(k==0)
PWM1=1000;
if(k==1)
PWM1=2000;
}
}
#include "main.h"
//PA8----EN
//PA9----PWM---TIM1_CH2
//PA10---EN
//PA11---PWM---TIM1_CH4
void PWM_Configuration(void)
{
TIM_TimeBaseInitTypeDef tim;
TIM_OCInitTypeDef oc;
GPIO_InitTypeDef gpio;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA |
RCC_APB2Periph_TIM1, ENABLE);
gpio.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_11;
gpio.GPIO_Mode = GPIO_Mode_AF_PP;
gpio.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &gpio);
gpio.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_10;
gpio.GPIO_Mode = GPIO_Mode_Out_PP;
gpio.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &gpio);
GPIO_SetBits(GPIOA,GPIO_Pin_8 | GPIO_Pin_10);
tim.TIM_Period=5000;
tim.TIM_Prescaler=36-1;
tim.TIM_ClockDivision=TIM_CKD_DIV1;
tim.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM1, &tim);
oc.TIM_OCMode = TIM_OCMode_PWM2;
oc.TIM_OutputState = TIM_OutputState_Enable;
oc.TIM_OutputNState = TIM_OutputNState_Disable;
oc.TIM_Pulse = 0;
oc.TIM_OCPolarity = TIM_OCPolarity_Low;
oc.TIM_OCNPolarity = TIM_OCPolarity_High;
oc.TIM_OCIdleState = TIM_OCIdleState_Reset;
oc.TIM_OCNIdleState = TIM_OCIdleState_Reset;
TIM_OC2Init(TIM1, &oc);
TIM_OC4Init(TIM1, &oc);
TIM_ARRPreloadConfig(TIM1, ENABLE);
TIM_CtrlPWMOutputs(TIM1,ENABLE);
TIM_Cmd(TIM1, ENABLE);
}
#ifndef __PWM_H__
#define __PWM_H__
void PWM_Configuration(void);
#define PWM1 TIM1->CCR1
#endif
|
最佳答案
查看完整内容[请看2#楼]
#define PWM1 TIM1->CCR1 这个是设置通道1的 ,你只配置了通道2和4,肯定不能输出pwm
建议参考下战舰开发板的 pwm实验
|