STM32引脚PA15,PB3,PB4用做普通I/O口高低电平默认无法拉高拉低

这篇具有很好参考价值的文章主要介绍了STM32引脚PA15,PB3,PB4用做普通I/O口高低电平默认无法拉高拉低。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

STM32,这个MPU上电默认PB4 PB3 PA15这些引脚电平且无法正常拉高拉低。

PB4,PA15为高电平,PB3为低电平。

其实原因是:I/O口不能正常输出一般都是端口被复用了造成的。

文章讲的这几个端口在单片机上电时默认就是复用的,JTAG相关的PA13,PA14,PA15,PB3,PB4引脚,禁用JTAG或SWD可以释放其中的一些引脚。stm32 pa15,stm32,嵌入式硬件,单片机

这个就是复用功能 

我们需要使用stlinkV2进行烧录所以使用,部分重映射。JTAG-DA失能,SW-DP使能;

   RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO ,ENABLE);//重映射需要先使能AFIO时钟
  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//只关闭JTAG而保留SWD

 打开复用时钟是为了,使用重映射功能。(PinRemapConfig)

重映射就是引脚重映射,本来每个内置外设都有原来设定的引脚,所谓的重映射就是通过某种方式,将外设本来的引脚的功能赋予给另外的引脚。这里就是释放了PB4,PB3,PA15.

以下是代码实例:

void Motor_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
	
 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
	
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_6;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOB, &GPIO_InitStructure);
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOB, &GPIO_InitStructure);
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOB, &GPIO_InitStructure);
	//使用推挽输出,别用复用推挽;
//	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
//	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_6;
//	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
//	GPIO_Init(GPIOB, &GPIO_InitStructure);
//	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
//	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4;
//	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
//	GPIO_Init(GPIOB, &GPIO_InitStructure);
//	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
//	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
//	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
//	GPIO_Init(GPIOB, &GPIO_InitStructure);
	PWM_Init();
}

然后就可以快乐的拉高拉低io口电平啦。

GPIO_ResetBits(GPIOB,GPIO_Pin_4);//默认高,欧姆表测得到低电平就好啦。
 GPIO_SetBits(GPIOB,GPIO_Pin_3);//默认低,拉高就正确啦。

不知道为啥打开复用功能,端口配置复用推挽不可以正常拉高拉低,只有普通的推挽才可以,有会的小伙伴教教我。

参考文献:

STM32 I/O口不能正常输出高低电平问题的解决方案_stm32 io在中断中能输出,主程序中无法_奇奇猴的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-771163.html

到了这里,关于STM32引脚PA15,PB3,PB4用做普通I/O口高低电平默认无法拉高拉低的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • STM32配置GPIO的高低电平

    一、在keil对应的工程文件的对应位置新建gpio.h和gpio.c文件; 二、编辑gpio.c文件; 三、在gpio.h文件中编辑; 四、在主文件main.c文件中运用即可;

    2024年02月13日
    浏览(37)
  • STM32 GPIO实验_交替输出高低电平

    1.实验目的: 使PB5和PE5交替输出高低电平。 以固定的周期让当PB5输出高电平时PE5输出低电平,反之当PB5输出低电平时PE5输出高电平。 2.头文件和声明子函数:延时函数用于提供固定的变化周期。 3.1主函数部分1:初始化PB5和PE5引脚。 3.2主函数部分2:PB5和PE5一个置高电平(熄

    2024年02月08日
    浏览(41)
  • STM32 -- 串口引脚整理

    一、引脚分配列表 串口端口 发送引脚 (TX) 接收引脚 (RX) USART1 PA9 PA10 USART2 PA2 PA3 USART3 PB10 PB11 UART4 PC10 PC11 UART5 PC12 PD2 USART6 PC6 PC7 二、串口引脚的规律         STM32芯片上,引脚功能的布局安排,被设计得很有规律。         不同型号间,功能或异,但其外设功能在引

    2024年01月16日
    浏览(42)
  • STM32引脚及GPIO的概念

    一、 引脚输入输出 在单片机(microcontroller)中,引脚(pin)是指连接到外部电路的可编程接口。每个引脚可以被配置为输入或输出。 输入引脚用于接收外部信号或数据,而输出引脚用于发送信号或数据给外部设备。 引脚被配置为输入: 它可以读取外部电路中的信号。这意

    2024年02月12日
    浏览(36)
  • 【【STM32--28--IO引脚的复用功能】】

    STM32的IO复用功能 何为复用? 我们先了解一下何为通用 IO端口的输入或输出是由GPIO外设控制,我们称之为通用 复用: IO端口的输入或者是输出是由其他非GPIO外设控制就像经常说的USART 由 DR寄存器进行输出 STM32的IO复用功能 1.各个IO都支持什么复用功能 2.IO复用功能的冲突问题

    2024年02月09日
    浏览(45)
  • STM32F103C8T6引脚图及引脚功能说明

    内容部分引用STM32F103C8T6引脚图_karwen2020的博客-CSDN博客_stm32引脚图 

    2024年02月11日
    浏览(45)
  • STM32F103引脚输入输出模式详解

    目录 一:输入模式 1.1:模拟输入 1.2: 浮空输入  1.3:上拉输入  1.4:下拉输入 1.5: 为什么没有复用输入配置模式  二:输出模式 2.1:推挽输出 2.2:开漏输出  2.3:复用推挽输出 2.4:复用开漏输出  1.1:模拟输入 模拟输入(GPIO_Mode_AIN):这种输入方式和浮空输入非常相

    2024年02月05日
    浏览(62)
  • STM32使用IIC通信的引脚配置问题

    在使用IIC通信时,遇到引脚配置问题,记录一下: IIC的两个引脚SDA和SCL都要求既能输入又能输出。 问题 : SDA线是由不同的器件分时控制的,这样就会有一个问题:当一个器件主动置高或者置低时,如果另一个器件发出相反电平,就会造成短路。 如果将SDA引脚配置成推挽模

    2024年02月12日
    浏览(38)
  • STM32引脚定义表以及重映射的使用方法

    首先STM32的引脚图: 1. 表格颜色: 橙色是电源相关引脚。 蓝色是最小系统相关的引脚 绿色是IO口,功能这些引脚。 2. 类型: S代表电源,I代表输入,O代表输出,IO代表输入输出 3.I/O 口电平( 表示它能容忍的的电压 ): FT 是代表能容忍5v电压。 没有FT就代表只能容忍3.3V电压

    2024年02月07日
    浏览(43)
  • STM32F103xC,xD,xE引脚定义

    由于在使用STM32系列芯片过程中发现互联网没有整理好的引脚定义,因此自己整理一份,方便以后查阅。 Pin 重新上电时的功能 默认功能 重映射 PA0 PA0 WKUP/USART2_CTS/ADC123_IN0/TIM2_CH1_ETR/TIM5_CH1/TIM8_ETR PA1 PA1 USART2_RTS/ADC123_IN1/TIM5_CH2/TIM2/CH2 PA2 PA2 USART2_TX/TIM5_CH3/ADC123_IN2/TIM2_CH3 PA3 PA3 U

    2024年03月09日
    浏览(54)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包