关于STM32中SPI1引脚PB3和PB4无法拉低的问题及相关解释

近几点准备使用SPI1调试M25P80 发现需要用到引脚

PB3----SPI1_SCK
PB4----SPI1_MISO
PB5----SPI1_MOSI
PD4----FLASH_SPI1_NSS

但是配置好后 通过万用表或者示波器 都无法拉低PB3(一直为电平3.3V) PB4为1.5V左右,以为是SPI1配置问题,反复更改调试,甚至使用点LED灯的方式依然无法拉低
几天后突然反映过来应该 搜PB3和PB4引脚问题 而不是SPI引脚无法拉低

明白PB3和PB4在系统复位时候,分别默认为SYS_JIDO和SYS_HJTRST;
所以需要通过用户自行禁止其功能;

以下STM32代码
经本人用IO至高置底的输出方式确定可行
以下为LED.c代码

void LED_Init(void)
{GPIO_InitTypeDef  GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOD, ENABLE);   //ʹÄÜPB,PE¶Ë¿ÚʱÖÓ
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);                   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
}

以下为LED.h代码

#ifndef __LED_H
#define __LED_H
#include "sys.h"#define LED10 PBout(3)// PB3
#define LED11 PBout(4)// PB4
#define LED12 PBout(5)// PB5
#define LED13 PDout(3)// PD5    #endif

以下主函数测试代码

#include "led.h"
int main(void){  delay_init();      LED_Init();whil(1){LED10=!LED10;LED11=!LED11;LED12=!LED12;LED13=!LED13;delay_ms(1000);  }}

以下为需要加入代码

//打开时钟函数
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);  //打开GPIO口时钟,先打开复用才能修改复用功能
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//要先开时钟,再重映射;这句表示关闭jtag,使能swd。
//接下来按照自己需要配置IO的各种模式就行

**也可以加入如下片段测试 **

//JTAG模式设置,用于设置JTAG的模式
//mode:jtag,swd模式设置;00,全使能;01,使能SWD;10,全关闭;
//#define JTAG_SWD_DISABLE   0X02
//#define SWD_ENABLE         0X01
//#define JTAG_SWD_ENABLE    0X00
void JTAG_Set(u8 mode)
{u32 temp;temp=mode;temp<<=25;RCC->APB2ENR|=1<<0;     //开启辅助时钟       AFIO->MAPR&=0XF8FFFFFF; //清除MAPR的[26:24]AFIO->MAPR|=temp;       //设置jtag模式
}

尊重原创-以下是参考出处

作者:辉夜星辰
来源:CSDN
原文:https://blog.csdn.net/weixin_37787043/article/details/82805561

尊重原创-以下是参考出处

作者:bobbat
来源:CSDN
原文:https://blog.csdn.net/bobbat/article/details/50910559

关于STM32中SPI1引脚PB3和PB4无法拉低的问题及相关解释相关推荐

  1. STM32的PA15、PB3、 PB4管脚作普通管脚的解决办法

      最近做了一个板子,使用的是SWD方式进行下载程序,仅仅使用到SWDIO(PA13) 和SWCLK(PA14)两个管脚.我将PA15(JTDI)和PB3(JTDO)管脚用于他用(用于点LED使用), ...

  2. STM32 中JTAG 引脚作为普通IO口设置方法

    stm32的程序下载引脚涉及PB3.PB4.PA13.PA14.PA15,其中PA13,PA14分别作为SWD调试的SWIO和SWCLK.PB3,PB4,PA13,PA14,PA15共同用于JTAG调 ...

  3. STM32F103的PC13、PB3和PB4定义为普通IO口使用

    PC13初始化: PC13的.c文件初始化: void GPIO_Init(void) {GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClock ...

  4. stm32 将PB3,PB4设置为普通IO模式

    最近在做项目,涉及到将PA3.PA4引脚作为普通IO模式,控制LED灯亮灭,发现这两个IO口不受控制,一直处于高电平状态.查阅stm32的引脚说明发现,PB3和PB4在系统复位时候,分别默认为SYS_ ...

  5. STM32 JTAG SWD (PB3 PB4用作普通IO)及启动模式

    JTAG管脚用作普通IO  在STM32中,PA13/14/15 & PB3/4默认配置为JTAG功能,若要用作普通IO时需要禁用JTAG(使用SWD模式,可以节省IO),增加如下代码即可: ...

  6. STM32 PB3或者PB4不能正常使用的讲解

    最近用STM32F103T8做项目,发现PB3和PB4这两个IO不可控,一直是高电平: 原因是PB3和PB4在系统复位时候,分别默认为SYS_JIDO和SYS_HJTRST: 所以需要通过用户自行禁止 ...

  7. STM32F1系列PB3,PB4,PA13,PA14,PA15用作普通IO口的特殊配置

    STM32F1系列PB3,PB4,PA13,PA14,PA15用作普通IO口的特殊配置 最近博主用STM32F103C8T6做了一个温度测控模块,用到PB3,PB4,PA15等引脚控制外设.发现不管怎 ...

  8. stm32f1 使用PB3、PB4、PB15作为普通IO口

    stm32f1 使用PB3.PB4.PB15作为普通IO口 PB3,PB4,PA15默认为JTAG接口,使用SW接口下载程序可不使用这三个引脚,用于普通引脚,需在初始化中加入如下代码 HAL库: __ ...

  9. STM32中GPIO的8种工作模式

    一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止.高低电平由IC的电源决定.形象点解释:推挽,就是有推有拉,任何 ...

最新文章

  1. 基于服务器的AAA作业(第二次)
  2. python的用途实例-三个实例带你了解生成器的作用
  3. 案例:图书管理——补充知识(数组相关API)||补充知识(数组响应式变化)
  4. 方法论、方法论——程序员的阿喀琉斯之踵
  5. 纯JavaScript实现弹出选择第几个单选按钮
  6. 更改mysql最大连接数
  7. java摘要_java 摘要
  8. c++矩阵运算库Eigen简介
  9. 批量自动化配置Dell服务器idrac管理口IP
  10. 谈谈在深圳挤公交那些事
  11. C++ 167. 两数之和 II 633. 平方数之和
  12. 职场干货 | 如何让你的自我介绍,快速打动面试官
  13. SGE上的qsub以及作业的状态查看
  14. 安卓沉浸式状态栏_要简单还要沉浸 Dacom L10 主动降噪(ANC)蓝牙耳机体验
  15. 沁恒触摸蓝牙模块方案测试体验(CH582)
  16. 07 爬取知乎张佳玮文章
  17. 【matlab矩阵运算】01、把矩阵展开成向量
  18. vscode安装python扩展并开展远程调试的过程
  19. 安装了宝塔面板的服务器,一键部署私有云
  20. Linux国产操作系统,UCA-系统工程师学习必备技能,Linux启动流程、计划任务、密码破解和密码防破解以及ssh服务

热门文章

  1. 攻击游戏服务器 修改数据库,游戏服务器数据库修改器
  2. 解决无法登录微软(Microsoft)账号的设置
  3. Android版MT4使用方法,安卓版手机MT4使用手册
  4. debian 添加阿里apt源
  5. 【Ubuntu】自动更换添加倒计时的壁纸
  6. 京东茅台显卡鞋子端全能助手软件使用教程
  7. Play a game(博弈)
  8. 作者:周傲英,华东师范大学长江学者、特聘教授、数据科学与工程研究院院长。...
  9. c语言程序 库 函数 tg,《C语言程序设计》——第三章PPT课件
  10. P4363 [九省联考2018]一双木棋