历史上的今天
今天是: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接口,使单片机仍可下载程序与调试。
史海拾趣
|
集成电路用于不同的型号产品,可靠性水平要求有所不同,由于筛选水平直接影响到产品成本及其质量和可靠性,在依据国军标的情况下,各单位的筛选测重点不同,那么它所涉及的是那些基本问题?… 查看全部问答> |
|
如题!小弟我正努力想成为一名合格的FPGA开发工程师,现在正在努力学习中,希望各位前辈指点。 迫切想知道想学好FPGA需要掌握哪些知识??? 先谢谢啦!… 查看全部问答> |
|
什么是RS-232-C接口?采用RS-232-C接口有何特点?传输电缆长度如何考虑? 答: 计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免 ...… 查看全部问答> |
|
“CH1”文件夹:本书第1章的“带RAM存储器的实时时钟芯片PCF8583”源文件和原理图。 “CH2”文件夹:本书第2章的“带RAM存储器的串行I2C实时时钟芯片DS1307”源文件和原理图。 “CH3”文件夹:本书 ...… 查看全部问答> |
|
查了一下大家所说的,都是使用WSAIoctl来使用SIO_KEEPALIVE_VALS参数来设置,让TCP自动进行心跳,但是我用的EVC4上这样设置好像不支持,不知道大家是怎样做的。 另外还查到一种方法,在注册表里该KeepAlive设置,不知道这样可不可以。 我自己也会 ...… 查看全部问答> |




