历史上的今天
返回首页

历史上的今天

今天是:2024年09月09日(星期一)

正在发生

2018年09月09日 | STM32单片机释放PB3/PB4/PA15作为普通IO口

2018-09-09 来源:eefocus

  一次使用STM32F103RCT6单片机用到多个IO口时发现:不管如何配置,PB3,PB4,PA15无法正常控制输出高低电平,而其他IO口正常。其IO口初始化操作如下:


    GPIO_InitTypeDef GPIO_Initure;


    __HAL_RCC_GPIOA_CLK_ENABLE();               //开启GPIOA时钟

    __HAL_RCC_GPIOB_CLK_ENABLE();               //开启GPIOB时钟


    GPIO_Initure.Pin=GPIO_PIN_15;

    GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;      //推挽输出

    GPIO_Initure.Pull=GPIO_PULLUP;              //上拉

    GPIO_Initure.Speed=GPIO_SPEED_HIGH;         //高速

    HAL_GPIO_Init(GPIOA,&GPIO_Initure);


    GPIO_Initure.Pin=GPIO_PIN_3|GPIO_PIN_4;

    HAL_GPIO_Init(GPIOB,&GPIO_Initure);


  查找相关芯片资料发现,包括这三个引脚在内的PB3,PB4,PA13,PA14,PA15是特殊的IO口,默认用作JTAG/SWD仿真器的调试接口。其中PA13,PA14分别作为SWD调试的SWIO和SWCLK;PB3,PB4,PA13,PA14,PA15共同用于JTAG。 

这里写图片描述 


这里写图片描述 


  如需使用这些IO口需要禁止相关JTAG/SWD功能。查看HAL库文件,可找到相关函数。

/**

  * @brief Enable the Serial wire JTAG configuration

  * @note  ENABLE: Full SWJ (JTAG-DP + SW-DP): Reset State

  * @retval None

  */

#define __HAL_AFIO_REMAP_SWJ_ENABLE()   MODIFY_REG(AFIO->MAPR, AFIO_MAPR_SWJ_CFG, AFIO_MAPR_SWJ_CFG_RESET)


/**

  * @brief Enable the Serial wire JTAG configuration

  * @note  NONJTRST: Full SWJ (JTAG-DP + SW-DP) but without NJTRST

  * @retval None

  */

#define __HAL_AFIO_REMAP_SWJ_NONJTRST() MODIFY_REG(AFIO->MAPR, AFIO_MAPR_SWJ_CFG, AFIO_MAPR_SWJ_CFG_NOJNTRST)


/**

  * @brief Enable the Serial wire JTAG configuration

  * @note  NOJTAG: JTAG-DP Disabled and SW-DP Enabled

  * @retval None

  */

#define __HAL_AFIO_REMAP_SWJ_NOJTAG()   MODIFY_REG(AFIO->MAPR, AFIO_MAPR_SWJ_CFG, AFIO_MAPR_SWJ_CFG_JTAGDISABLE)


/**

  * @brief Disable the Serial wire JTAG configuration

  * @note  DISABLE: JTAG-DP Disabled and SW-DP Disabled

  * @retval None

  */

#define __HAL_AFIO_REMAP_SWJ_DISABLE()  MODIFY_REG(AFIO->MAPR, AFIO_MAPR_SWJ_CFG, AFIO_MAPR_SWJ_CFG_DISABLE)



  在初始化IO操作的最后添加语句:


__HAL_AFIO_REMAP_SWJ_NOJTAG();


  即可禁止JTAG调试功能,将PB3,PB4,PA15用作普通IO口,而保留PA13,PA14的SWD接口,使单片机仍可下载程序与调试。


推荐阅读

史海拾趣

Defense Supply Center Columbus公司的发展小趣事

在电子行业,产品质量是企业生存和发展的关键。Defense Supply Center Columbus公司始终将质量管理放在首位,建立起一套完善的质量管理体系。公司严格按照国际标准进行生产和检测,确保每一件产品都符合质量要求。同时,公司还注重员工的培训和教育,提高员工的质量意识和操作技能。这些措施的实施,使得公司的产品质量得到了显著提升,赢得了客户的广泛赞誉。

BusBoard Prototype Systems公司的发展小趣事

在国内市场取得一定成绩后,BusBoard Prototype Systems开始将目光投向国际市场。公司积极参加国际电子展会,与海外客户建立联系,并成功将产品和服务推向了海外市场。随着国际业务的不断拓展,公司的知名度和影响力也逐渐提升。

ABCO公司的发展小趣事

ABCO公司深知产品质量是企业生存的根本。因此,公司建立了一套严格的质量管理体系,从原材料采购到产品生产、检测、出厂等各个环节都进行严格把控。同时,公司还注重持续改进,不断优化生产流程,提高生产效率,确保产品质量始终保持在行业前列。

芯茂微电子公司的发展小趣事

芯茂微电子始终坚持品质至上和客户至上的原则,致力于为客户提供高品质、高性能的集成电路产品和服务。公司建立了完善的质量管理体系和客户服务体系,从产品研发、生产、销售到售后服务,每一个环节都严格把控,确保产品质量和客户满意度。正是凭借这种对品质和客户的执着追求,芯茂微电子赢得了客户的广泛信赖和赞誉。

ADDtek公司的发展小趣事

随着市场竞争的日益激烈和技术创新的加速推进,芯茂微电子也面临着越来越多的挑战和机遇。面对这些挑战,公司始终坚持不懈地推进技术创新和产品研发,不断提升自身的核心竞争力和市场地位。同时,公司也积极寻求新的市场机遇和合作伙伴,不断拓展业务领域和市场空间。正是这种对挑战和机遇的积极应对和坚持不懈的努力,让芯茂微电子在电子行业中不断发展壮大。

Hi-Optel Technologly Co Ltd公司的发展小趣事

近年来,随着国家对集成电路产业的重视和支持力度的不断加大,芯茂微电子也积极响应国家号召,致力于推动国产集成电路产业的发展和自主创新。公司加强了对核心技术的研究和投入,积极引进和培养高端人才,加强与国内外知名企业和研究机构的合作与交流。同时,公司也积极参与国家重大科研项目和产业化项目,为推动我国集成电路产业的发展和自主创新做出了积极贡献。这些努力不仅提升了芯茂微电子的技术实力和市场竞争力,也为我国集成电路产业的发展注入了新的活力和动力。

以上五个故事仅代表芯茂微电子在电子行业发展过程中的一部分经历和成就。随着公司的不断发展和壮大,相信未来还会有更多精彩的故事等待我们去发现和书写。

问答坊 | AI 解惑

我想知道的!!!!!!!

集成电路用于不同的型号产品,可靠性水平要求有所不同,由于筛选水平直接影响到产品成本及其质量和可靠性,在依据国军标的情况下,各单位的筛选测重点不同,那么它所涉及的是那些基本问题?…

查看全部问答>

怎样才能成为一名合格的FPGA开发工程师

如题!小弟我正努力想成为一名合格的FPGA开发工程师,现在正在努力学习中,希望各位前辈指点。 迫切想知道想学好FPGA需要掌握哪些知识??? 先谢谢啦!…

查看全部问答>

[精彩] 有关RS232和RS485接口的问答

什么是RS-232-C接口?采用RS-232-C接口有何特点?传输电缆长度如何考虑?   答: 计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免 ...…

查看全部问答>

急!如何解密吗???

有一台织造机,用的是欧姆龙的PLC,还有触摸屏,不知为何锁住了,开不了机!该如何下手,怎么解呀!!求救!在这谢过了!!…

查看全部问答>

单片机与外围器件接口实例详解

  “CH1”文件夹:本书第1章的“带RAM存储器的实时时钟芯片PCF8583”源文件和原理图。     “CH2”文件夹:本书第2章的“带RAM存储器的串行I2C实时时钟芯片DS1307”源文件和原理图。     “CH3”文件夹:本书 ...…

查看全部问答>

新手问:为什么不能上传附件?

想上传个有用的文档,为什么老是出错,提示出现未知错误? 文件还没有1M呢 请高手帮忙,我是新手…

查看全部问答>

wince6 乱码问题!

vs2005 定制 wince6 R2 在locale中选择了简体中文 ,模拟器运行起来后所汉字显示却是乱码?显示为方框字样。…

查看全部问答>

单片机电路电源管理

我设计的单片机驱动步进电机电路中需要5V1.2V12V电压,怎样做电源管理来供电呢,板上电源是外接由220V变压器变压12V后供电的…

查看全部问答>

WinCE上TCP套接字的KeepAlive问题

查了一下大家所说的,都是使用WSAIoctl来使用SIO_KEEPALIVE_VALS参数来设置,让TCP自动进行心跳,但是我用的EVC4上这样设置好像不支持,不知道大家是怎样做的。 另外还查到一种方法,在注册表里该KeepAlive设置,不知道这样可不可以。 我自己也会 ...…

查看全部问答>