初级会员

- 积分
- 92
- 金钱
- 92
- 注册时间
- 2015-1-27
- 在线时间
- 4 小时
|
5金钱
关于串口和PWM配合使用的问题,两部分单独测试的时候都没有问题,很正常,但是当我启动PWM输出后,串口就不能发送和接收了,有没人能帮我看看?
signed short Test_Voltage,Test_Current;
int main(void)
{
delay_init(); //延时函数初始化
LED_Init(); //LED端口初始化
NVIC_Configuration(); //设置NVIC中断分组2,2位抢占优先级,2位响应优先级
KEY_Init(); //初始化与按键连接的硬件接口
//EXTIX_Init(); //外部中断初始化及中断服务程序
Claer_GPIO(); //清除GPIO设置
USART1_Init(9600); //初始化串口1
USART2_Init(9600); //初始化串口2
while(1)
{
if(KEY_0==0&KEY_1)
{
Input_Power_PWM();
}
else if(KEY_0&KEY_1==0)
{
Output_Power_PWM();
}
else
{
Test_Voltage=Data_Dispose(0x08);
Test_Current=Data_Dispose(0x09);
delay_ms(1000);
LED0=!LED0;
}
}
}
void Input_Power_PWM(void)
{
extern signed short Test_Voltage,Test_Current;
u16 Input_Power_PWM_VAL,Input_Power_PWM_CCR=7199;
//Input_Power_PWM_VAL为TIM2/3_CCR1/2/3/4的比较值(跳变值)
//Input_Power_PWM_CCR为捕获/比较寄存器的值,改变其值可以改变PWM的输出脉宽(频率/周期)
//PWM的输出频率=72MHz/PWM_CCR
//Input_Key_0/1按键输入值
double Input_Power_PWM_DTY=0.7;//占空比设置
Input_Power_PWM_VAL=(Input_Power_PWM_CCR+1)*Input_Power_PWM_DTY-1;
delay_ms(20);
Claer_GPIO();//清除IO输出
if(KEY_0==0&&KEY_1)
{
Reset_Out_GPIO();//GPIO配置复位
TIM4_PWM_Init(Input_Power_PWM_CCR,0); //TIM4不分频。PWM2频率=72000000/8000=9Khz
TIM_SetComparex(TIM4,Input_Power_PWM_VAL);
TIM_Cmd(TIM4,ENABLE); //使能TIM4,
while(KEY_0==0&&KEY_1)
{
Test_Voltage=Data_Dispose(0x08);
Test_Current=Data_Dispose(0x09);
delay_ms(500);
LED0=!LED0;//提示系统正在运行
}
}
Claer_GPIO();//清除IO输出
}
void Output_Power_PWM(void)
{
extern signed short Test_Voltage,Test_Current;
u16 Output_Power_PWM_VAL,Output_Power_PWM_CCR=7199;
//Output_Power_PWM_VAL为TIM4_CCR1/2/3/4的比较值(跳变值)
//Output_Power_PWM_CCR为捕获/比较寄存器的值,改变其值可以改变PWM的输出脉宽(频率/周期)
//PWM的输出频率=72MHz/PWM_CCR
double Output_Power_PWM_DTY=0.6;//占空比
Output_Power_PWM_VAL=(Output_Power_PWM_CCR+1)*Output_Power_PWM_DTY-1;
delay_ms(20);
Claer_GPIO();//清除IO输出
if(KEY_0&&KEY_1==0)
{
Reset_Out_GPIO();//GPIO配置复位
TIM2_PWM_Init(Output_Power_PWM_CCR,0); //TIM2不分频。PWM2频率=72000000/8000=9Khz
TIM3_PWM_Init(Output_Power_PWM_CCR,0); //TIM3不分频。PWM2频率=72000000/8000=9Khz
TIM_SetComparex(TIM2,Output_Power_PWM_VAL);
TIM_SetComparex(TIM3,Output_Power_PWM_VAL);
TIM3->CR1|=0x01; //使能定时器3
//TIM_Cmd(TIM3,ENABLE);//使能TIM3
while(KEY_0&&KEY_1==0)
{
Test_Voltage=Data_Dispose(0x08);
Test_Current=Data_Dispose(0x09);
delay_ms(200);
LED0=!LED0;//提示系统正在运行
}
}
Claer_GPIO();//清除IO输出
}
|
|