用的STM32F103C8T6
在做蓝牙串口控制PWM输出然后以此控制电机,在测试中,正常蓝牙通讯控制TIM1_CCR1调节占空比没有问题,但是一旦将PA8引脚接上对应的电机驱动端,串口通信立刻broken pipe或者connection reset by peer,只要不接此线路,无论怎么通信都保持正常。
这……有可能是我哪里物理连接上的问题吗
void PWM_Init(unsigned int arr,unsigned int psc)
{
RCC_APB2ENR|=1<<11; //TIM1时钟使能
GPIOA_CRH&=0XFFFFFFF0;//PA8输出
GPIOA_CRH|=0X0000000B;//复用输出
GPIOA_ODR|=1<<8;//PA8上拉
TIM1_ARR=arr;//设定计数器自动重装值
TIM1_PSC=psc;//预分频器不分频
TIM1_CCMR1|=6<<4; //CH1 PWM2模式
TIM1_CCMR1|=1<<3; //CH1预装载使能
TIM1_CR1|=1<<7; //ARPE使能自动重装载预装载允许位
TIM1_CR1|=1<<4; //向下计数模式
TIM1_CCER|= 3 << 0; //OC1 输出使能
TIM1_BDTR |= 1<<15;//MOE使能
TIM1_CCR1 = 99; //zkb
TIM1_EGR |= 1<<0;
TIM1_CR1|=0x01; //使能定时器1
}
int main()
{
char r;
r = 0;
RCC_HSE_ON();
RCC_APB2ENR=0xFFFFFFFF;
PWM_Init(99,7199);
GPIOB_Init();
USART1_Init();
while(1)
{
//初始循环
GPIOB_ODR &= 0xFFFFFFF0;
//串口接收处理
//GPIOB_ODR |= 0x1;//PB0 LED 进入接受状态
r = USART1_Receive_Byte();
//USART1_Send_Byte(0x33);//确实已接受到信号,返回
switch(r)
{
case 0x0:
//测试运转1
TIM1_CCR1 = 20;GPIOB_ODR |= 0x1;
break;
default:
//设计范围外,不响应
TIM1_CCR1 = 99;
break;
}
Delay_Ms(100);
}
}
|