STMC8T6怎样用keil5的debug观察PWM互补输出波形
时间: 2023-06-26 20:08:31 浏览: 328
在Keil 5中,您可以通过以下步骤使用调试模式观察PWM互补输出波形:
1. 打开Keil 5,并加载您的工程。
2. 在“Project”菜单下选择“Options for Target”。
3. 在弹出的对话框中,选择“Debug”选项卡。
4. 在“Debug”选项卡中,选择您所使用的调试器,并勾选“Enable SWO Viewer”和“Enable CP15 Access”两个选项。
5. 点击“Settings”按钮,在弹出的对话框中选择“Trace”选项卡。
6. 在“Trace”选项卡中,勾选“Enable Trace”和“Enable ITM Stimulus Port 0”两个选项,并将“Trace Output Data Width”设置为“8”。
7. 点击“OK”按钮保存设置。
8. 在代码中添加以下代码以初始化PWM输出:
``` c
void PWM_Init(void)
{
// 初始化PWM输出引脚
GPIO_Init(GPIOB, GPIO_PIN_0, GPIO_MODE_OUT_PP_LOW_FAST); // PWM1输出引脚
GPIO_Init(GPIOB, GPIO_PIN_1, GPIO_MODE_OUT_PP_LOW_FAST); // PWM2输出引脚
// 初始化TIM3
TIM3_DeInit();
TIM3_TimeBaseInit(TIM3_PRESCALER_1, 9999); // 定时器分频为1,计数器最大值为9999
TIM3_OC1Init(TIM3_OCMODE_PWM1, TIM3_OUTPUTSTATE_ENABLE, 4999, TIM3_OCPOLARITY_HIGH); // PWM1输出
TIM3_OC2Init(TIM3_OCMODE_PWM2, TIM3_OUTPUTSTATE_ENABLE, 4999, TIM3_OCPOLARITY_LOW); // PWM2输出
TIM3_Cmd(ENABLE); // 启动TIM3
// 启动PWM输出
TIM3_CtrlPWMOutputs(ENABLE);
}
```
9. 在代码中添加以下代码以生成PWM输出:
``` c
void PWM_Output(void)
{
TIM3_SetCompare1(4999); // PWM1输出占空比为50%
TIM3_SetCompare2(4999); // PWM2输出占空比为50%
}
```
10. 在代码中添加以下代码以启用SWO输出:
``` c
void SWO_Init(void)
{
// 配置系统时钟为72MHz
CLK_DeInit();
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);
// 初始化SWO输出
SWO_Init(SWO_FREQ, SWO_BAUDRATE);
printf("SWO initialized.\n");
}
```
11. 在代码中添加以下代码以输出PWM占空比:
``` c
void PWM_Debug(void)
{
printf("PWM1 duty cycle: %d%%\n", (int)(TIM3_GetCapture1()*100/10000));
printf("PWM2 duty cycle: %d%%\n", (int)(TIM3_GetCapture2()*100/10000));
}
```
12. 在主函数中调用以上函数,并在调用PWM_Debug函数后加入一个死循环,以便在调试模式下观察PWM输出:
``` c
void main(void)
{
// 初始化系统时钟
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);
// 初始化PWM输出
PWM_Init();
// 启用SWO输出
SWO_Init();
// 生成PWM输出
PWM_Output();
// 输出PWM占空比
PWM_Debug();
// 进入死循环
while(1);
}
```
13. 开始调试模式,在“Debug”窗口中可以看到SWO输出的PWM占空比信息。您可以使用示波器观察PWM互补输出波形,并将其与SWO输出的占空比信息进行比较。注意,在调试模式下,PWM输出可能会受到调试器的影响,因此您需要在实际使用时进行验证。
阅读全文