SWO 输出调试信息到DebugView



描述如何配置的贴子
1.
http://www.stmcu.org/module/forum/thread-602205-1-1.html
2.有些不同的方法
http://blog.csdn.net/shizhe0123/article/details/44178905
3.讨论的比较详细
http://www.cnblogs.com/afeibfp/archive/2013/01/12/2857268.html


描述SWD和J-TAG的帖子
http://www.51hei.com/mcu/1955.html




将程序下载到RAM中调试
http://www.neuaction.com/bbs/forum.php?mod=viewthread&tid=48&extra=page%3D1
在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输出可能会受到调试器的影响,因此您需要在实际使用时进行验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值