STM32/GD32复用SWDIO/SWCLK的方法

这篇具有很好参考价值的文章主要介绍了STM32/GD32复用SWDIO/SWCLK的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 起因

因为项目使用gd32的gpio都使用完了,只剩下SWDIOSWCLK可以使用,所以想着能不能把这两个管脚给利用起来,使资源的利用率最大化。

查询gd32的datasheet发现PA13/PA14管脚默认的功能是SWDIO跟SWCLK,但是还有一个默认功能是GPIO,但是把它作为默认GPIO,如果进行调试呢?

swclk和swdio接口,单片机,stm32,嵌入式硬件

在咨询供应商后,给出得方案是在初始化的时候,先进行一段时间的延时,再将PA13、PA14设置为通用GPIO口。但是这种方法不能满足我们的需求,我需要在启动之后立马就能对这两个GPIO口进行操作。所以考虑了另外一种方法:

使用外部通讯串口对GD32进行升级,实现对固件更新的需求

  1. 这里会有一个问题没有办法解决:对复用的SWDIO跟SWCLK进行调试,这个需要注意!文章来源地址https://www.toymoban.com/news/detail-692565.html

驱动代码部分

#define SWDIO_PIN                               GPIO_PIN_13
#define SWDIO_PIN_GPIO_PORT                     GPIOA
#define SWDIO_PIN_GPIO_CLK                      RCU_GPIOA
  
//PA13 SWDIO input    
gpio_mode_set(SWDIO_PIN_GPIO_PORT, GPIO_MODE_INPUT, GPIO_PUPD_NONE, SWDIO_PIN);

uint8_t KeyDetectSwdio(void)
{    
    return gpio_input_bit_get(SWDIO_PIN_GPIO_PORT, SWDIO_PIN);
}

到了这里,关于STM32/GD32复用SWDIO/SWCLK的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [GD32F4]基于GD32固件库移植cherryusb[STM32F4]

    [GD32F4]基于GD32固件库移植cherryusb[STM32F4] 使用开发板是淘宝买的不知名开发板,没什么好说的,具体的型号是GD32F450VET6。 使用的cherryusb版本是0.9.0版本。 使用的GD32官方固件库版本是:GD32F4xx_Firmware_Library_V3.0.4 cherryusb最牛的地方在于抛弃掉所有的依赖,只需要知道芯片的usb中断

    2024年02月06日
    浏览(49)
  • STM32平替GD32有多方便

    众所周知, GD32一直模仿STM32,从未被超越。 我最近公司使用的 GD32E230C6T6 这款芯片有48个引脚。 属于小容量的芯片。 我有一个用STM32写的代码,之前是用的 STM32F103CB 这款芯片是 中容量 的。 不过在keil中,只需要这两步,就能使用原来的逻辑,几乎不用修改代码。 1.  替换汇

    2024年03月17日
    浏览(29)
  • STM32,GD32,CH32相关补充(自用)

    Keil代码一键对齐工具_keil5代码对齐_感谢地心引力的博客-CSDN博客 【KEIL-MDK】系列——如何使用PC-Lint代码检查工具_keil pclint_Xiaoyibar的博客-CSDN博客  CAN总线分析仪使用及调试方式_can分析仪_Kevin的学习站的博客-CSDN博客 CAN通信知识梳理及在Stm32上的应用(HAL库)_冬瓜~的博客-C

    2024年02月16日
    浏览(27)
  • stm32、gd32等芯片固件升级思路

    众所都周知,固件固件就是固定不动的软件,所以不用升级,此贴完结。 。 。 。 。 。 哎,话虽如此固件一般情况下不需要更新,毕竟主要功能是为控制一些底层的硬件,但是你永远不知道明天和需求哪个先来。所以在一些必要时刻需要给你的单片机留一个后门用于应对各

    2024年02月12日
    浏览(52)
  • STM32/GD32 BootLoader升级 IAP升级

    如果我们的App 程序起始地址在0x08006000 ,并且App 的中断向量表在起始地址,那么BootLoader 程序下载App 后,为了App 程序能正确运行,开始App 程序的运行后第一步,就要把中断向量表重定位到0x08006000 那里。 我们的BootLoader下载App程序后,App程序就需要做同样的事情。主要有三个

    2024年02月11日
    浏览(58)
  • GD32F4移植STM32F4

    近期在项目中采用了GD32F407VET6替换原项目中的STM32F407VET6,网传GD的兼容性很好,之前也用F1系统的替换了一下,按照CSND各位大佬的经验一步步改进了代码,测试直接通过,现在也一直在项目中实际应用了,一直没有出问题。 所以这SMT时,嘉立创没有STM的货果断换成了GD,可换时

    2024年02月16日
    浏览(77)
  • stm32或gd32移植libcanard实现UAVCAN协议

    点击我下载 自己上传的点击下载 我自己是使用rt-thread操作系统移植的。但是不局限与操作系统,裸机也可以。 canard.node_id 设置本机id canardTxInit(1536, CANARD_MTU_CAN_CLASSIC); 初始化发送队列,1536为大小。 CANARD_MTU_CAN_CLASSIC 表示使用的是普通的can,数据最大为8个字节, CANARD_MTU_CA

    2024年02月09日
    浏览(62)
  • GD32(STM32)因为中断问题,导致不能进行程序 正常运行

    项目中,之前定时器中断就用了个TIM2,但后来程序优化需要再加一个计数定时器TIM6,     TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;                      // 开启定时器时钟,即内部时钟CK_INT=72M     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE);             // 自动重装载寄存器

    2024年02月07日
    浏览(35)
  • Keil5编译环境搭建流程----STM32和GD32

    以下蓝色字体是对应文章的链接,单击便可以查看详细信息! 文章链接: Keil5-MDK下载和安装教程 资源链接: Keil5_MDK安装包链接----点击下载 文章链接: stm32芯片包下载和安装教程 GD32芯片包下载和安装教程 资源链接: Keil5-STM32芯片包链接----点击下载 Keil5-GD32芯片包链接---

    2024年02月05日
    浏览(59)
  • stm32(GD32,apm32),开优化后需要特别注意的地方

    提到优化就不得不提及 volatile 使用场景 1:中断服务程序中修改的供其它程序检测的变量,需要加volatile; : 2:多任务环境下各任务间共享的标志,应该加volatile; 3:并行设备的硬件寄存器(如:状态寄存器) 还有一种就是今天遇到的查了半天,容易忘记 起因: 使用gd32F

    2024年02月09日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包