打印
[活动专区]

【AT-START-AT32F435测评】+ 1 原厂没说清的SWO输出使用我来说清

[复制链接]
1288|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
SWO是M4内核TRACE功能的输出管脚,可以为我们提供一种数据输出的手段,由于是内核功能,所以在AT32F435的用户手册上都没有过多介绍。这篇帖子就来介绍一下SWO功能在AT32F435上如何使用
我找了下资料,在ST的文档山对SWO的介绍还是比较详细的,因为内核相同所以介绍应该是一样的,我们一起先来看一下



ST的相关寄存器介绍如下

但在AT32F435的用户手册上是没有介绍的


但AT原厂提供的应用笔记有这样的介绍

但也只是介绍的简单用法,在实际芯片使用时,还是有问题的,需要根据芯片实际情况再加处理,下面看看我是怎么实际应用的吧。
首先按应用笔记的方式开启跟踪功能并使用异步模式
DEBUGMCU->ctrl &= 0xffdf;
DEBUGMCU->ctrl |= 0x0020;

第二步是配置SWO(PB3)的管脚,因为每个管脚都有很多功能,AT32使用了IOMUX对管脚功能进行了管理。所以需要对IO功能进行重映射
crm_periph_clock_enable(CRM_GPIOB_PERIPH_CLOCK, TRUE);
gpio_default_para_init(&gpio_init_struct);
  /* configure the uart tx pin */
  gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
  gpio_init_struct.gpio_out_type  = GPIO_OUTPUT_PUSH_PULL;
  gpio_init_struct.gpio_mode = GPIO_MODE_MUX;
  gpio_init_struct.gpio_pins = GPIO_PINS_3;
  gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
  gpio_init(PRINT_UART_TX_GPIO, &gpio_init_struct);
  gpio_pin_mux_config(GPIOB, GPIO_PINS_SOURCE3, GPIO_MUX_0);


代码相关的配置就完成了,还需要再编辑器上再配置一下
使能 Trace Enable,内核时钟 Core Clockx需要和芯片实际内核时钟一致,另外就是SWO Clock,不能太高。当出现打印乱码时,此时可尝试不勾选Autodetect,并手动修改时钟分频系数保证打印信息正常。

使用系统函数ITM_SendChar (uint32_t ch)进行SWO输出。

对printf进行重映射后,就可以使用printf通过SWO进行输出了

实际效果如下

至此,SWO输出在AT32F435上的使用就介绍完了
参考资料:
AN0015_Printf_Debug_Demo_ZH_V2.0.0.pdf (1.23 MB)
AN0015_Printf_Debug_Demo_V2.0.0.zip (2.09 MB)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:北京汇冠触摸技术有限公司/电子工程师
简介:电子工程师,嵌入式应用爱好者。

102

主题

1249

帖子

9

粉丝