问题遇到的现象和发生背景
stm32F1的PWM输出,想用两个定时器输出两种不同的pwm信号,但是定义第二个定时器函数后就报错说已经被定义了,试了时钟8和4都不行,甚至我改一个函数的名字都不行
问题相关代码,请勿粘贴截图
void TIM1_PWM_Init(u16 arr,u16 psc)
{
//此部分需手动修改IO口设置
RCC->APB2ENR|=1<<11; //TIM1时钟使能
GPIOA->CRH&=0XFFFFFFF0; //PA8清除之前的设置
GPIOA->CRH|=0X0000000B; //复用功能输出
GPIOA->CRH&=0XFFFF0FFF; //PA11清除之前的设置
GPIOA->CRH|=0X0000B000; //复用功能输出
TIM1->ARR=arr; //设定计数器自动重装值
TIM1->PSC=psc; //预分频器设置
TIM1->CCMR1|=7<<4; //CH1 PWM2模式
TIM1->CCMR1|=1<<3; //CH1预装载使能
TIM1->CCER|=1<<0; //OC1 输出使能
TIM1->CCMR2|=7<<12; //CH4 PWM2模式
TIM1->CCMR2|=1<<11; //CH4预装载使能
TIM1->CCER|=1<<12; //OC4 输出使能
TIM1->BDTR|=1<<15; //MOE 主输出使能
TIM1->CR1=0x0080; //ARPE使能
TIM1->CR1|=0x01; //使能定时器1
}
void TIM4_PWM_Init(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<2; //TIM8时钟使能
GPIOB->CRH&=0XFFFFFF0F; //PC9清除之前的设置
GPIOB->CRH|=0X000000B0; //复用功能输出
GPIOB->CRH&=0XFFFFFFF0; //PC8清除之前的设置
GPIOB->CRH|=0X0000000B; //复用功能输出
GPIOB->CRL&=0X0FFFFFFF; //PC7清除之前的设置
GPIOB->CRL|=0XB0000000; //复用功能输出
GPIOB->CRL&=0XF0FFFFFF; //PC6清除之前的设置
GPIOB->CRL|=0X0B000000; //复用功能输出
TIM4->ARR=arr; //设定计数器自动重装值
TIM4->PSC=psc; //预分频器设置
TIM4->CCMR1|=7<<4; //CH1 PWM2模式
TIM4->CCMR1|=1<<3; //CH1预装载使能
TIM4->CCER|=1<<0; //OC1 输出使能
TIM4->CCMR1|=7<<12; //CH1 PWM2模式
TIM4->CCMR1|=1<<11; //CH1预装载使能
TIM4->CCER|=1<<12; //OC1 输出使能
TIM4->CCMR2|=7<<4; //CH4 PWM2模式
TIM4->CCMR2|=1<<3; //CH4预装载使能
TIM4->CCER|=1<<0; //OC4 输出使能
TIM4->CCMR2|=7<<12; //CH4 PWM2模式
TIM4->CCMR2|=1<<11; //CH4预装载使能
TIM4->CCER|=1<<12; //OC4 输出使能
//TIM4->BDTR|=1<<15; //MOE 主输出使能
TIM4->CR1=0x0080; //ARPE使能
TIM4->CR1|=0x01; //使能定时器1
}
运行结果及报错内容
*** Using Compiler 'V5.06 update 1 (build 61)', folder: 'D:\Keil_v5\ARM\ARMCC\Bin'
Build target 'Target 1'
compiling timer.c...
..\HARDWARE\LED\led.h(21): error: #130: expected a "{"
void LED_Init(void); //??始化
..\HARDWARE\TIMER\timer.c(21): warning: #12-D: parsing restarts here after previous syntax error
{
..\HARDWARE\TIMER\timer.c(72): error: #247: function "TIM4_PWM_Init" has already been defined
void TIM4_PWM_Init(u16 arr,u16 psc)
..\HARDWARE\TIMER\timer.c: 1 warning, 2 errors
compiling test.c...
test.c(12): error: #130: expected a "{"
int main(void)
test.c: 0 warnings, 1 error
"..\OBJ\test.axf" - 3 Error(s), 1 Warning(s).
Target not created.
Build Time Elapsed: 00:00:01
我的解答思路和尝试过的方法
只要把TIM8_PWM_Init相关的都注释掉,包括头文件的,就不报错了,我试过改函数名字,没有用,换了个时钟还是不行。
我想要达到的结果
想要的效果就是没有报错