1 PC13、PC14、PC15的使用

这三个引脚与RTC复用,《STM32参考手册》中这样描述:

PC13 PC14 PC15需要将VBAT与VDD连接,实测采用以下程序驱动4个74HC165可以不用上拉电阻,输出速度配置为2MHz(实测50MHz也能输出正常),但是还是建议加上拉电阻比较好。

最新文档中已经删除“在同一时间只有一个引脚能作为输出”也就是三个引脚可以同时作为输出引脚,其他条件未变

库函数版本程序如下:


  1. RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE );
  2. PWR_BackupAccessCmd( ENABLE );/* 允许修改RTC和后备寄存器,取消备份区写保护*/
  3. RCC_LSEConfig( RCC_LSE_OFF ); /* 关闭外部低速时钟OSC32,PC14+PC15可以用作普通IO*/
  4. BKP_TamperPinCmd(DISABLE); /* 关闭TAMPER入侵检测功能,PC13可以用作普通IO*/
  5. PWR_BackupAccessCmd(DISABLE); /* 禁止修改RTC和后备寄存器,备份区写保护*/
  6. /*注意PC13 PC14 PC15通过电源开关进行供电,只能吸收3mA电流,输出只能工作在2MHz,最大驱动30pF,不能驱动LED*/
  7. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 |GPIO_Pin_14 | GPIO_Pin_15;   //PC13=SH/LD,PC14=SCLK,PC15空
  8. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  9. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//GPIO_Mode_Out_PP;
  10. GPIO_Init(GPIOC, &GPIO_InitStructure);

寄存器版本程序初始化如下:


  1. RCC->APB2ENR|=1<<4; //使能PORTC时钟
  2. RCC->APB2ENR|=1<<0; //使能AFIO时钟
  3. GPIOC->CRH&=0X000FFFFF; //PC13,14,15设置成输出 2MHz 推挽输出
  4. GPIOC->CRH|=0X22200000;
  5. PWR->CR|=1<<8; //取消备份区写保护
  6. RCC->BDCR&=0xFFFFFFFE; //外部低俗振荡器关闭 C14,PC15成为普通IO
  7. BKP->CR&=0xFFFFFFFE; //侵入检测TAMPER引脚作为通用IO口使用
  8. PWR->CR&=0xFFFFFEFF; //备份区写保护

其他链接:STM32L PC13当IO口使用驱动LED,PC14,PC15外接晶振,且RTC正常

 2 PB3、PB4、PA15引脚做GPIO使用(SWD下载程序)

PB3、PB4、PA15分别与JTDO、JNTRST和JTDI复用,做普通口需要禁用JTAG,使用SWD下载程序。

程序如下:


  1. GPIO_InitTypeDef GPIO_InitStructure;
  2. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE);
  3. RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE );
  4. GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
  1. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
  2. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  3. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  4. GPIO_Init(GPIOA, &GPIO_InitStructure);
  5. GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
  6. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4;
  7. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  8. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  9. GPIO_Init(GPIOB, &GPIO_InitStructure);

STM32一些特殊引脚做IO使用的注意事项的更多相关文章

  1. 都是stm32的JTAG引脚惹的祸

    转载请注明出处:http://blog.csdn.net/qq_26093511/article/category/6094215 最近在调试08接口的LED显示屏,使用的是自己做的STM32板子. ...

  2. 关于STM32的外部引脚中断的问题

    今天想用自己以前的比较干净的工程模板做一个东西,,,,,,,在添加上引脚中断的时候,,突然想知道自己配置的中断优先级是否正确执行,,,,, 以前刚学习32的时候测试过是可以的,,不过今天发现了一个大问 ...

  3. STM32 --- 什么时候打开复用IO的时钟(比如RCC_APB2Periph_AFIO)

    需要用到外设的重映射功能时才需要使能AFIO的时钟,包括外部中断. 外部中断(EXTI)中与AFIO有关的寄存器是AFIO-EXTICR1.2.3,它们是用来选择EXTIx外部中断的输入脚之用. 举例 ...

  4. stm32 复位后 引起引脚的变化,输出电平引起的问题

    在做项目的时候,需要通过蓝牙发送指令给STM32,使其复位,然后进入bootloader程序进行升级,但是复位后会导致蓝牙模块关机.stm32有个引脚连接着蓝牙的开关机引脚,高电平开机,低电平关机,我 ...

  5. STM32系列单片机IO口模式设置

    STM32单片机的每组IO口都有4个32位配置寄存器用于配置GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR和GPIOx_PUPDR,2个32位数据寄存器用于配置输入和 ...

  6. STM32库函数编程、Keli/MDK、stm32f103zet6

    catalogue . Cortex-M3地址空间 . 基于标准外设库的软件开发 . 基于固件库实现串口输出(发送)程序 . 红外接收实验 . 深入分析流水灯例程 . GPIO再举例之按键实验 . 串 ...

  7. LPC同STM32的比较

    Cortex-M3是新兴起来的一种ARM7的核,而ARM7TDMI是一种传统的经典的ARM内核.我们就抛开这一切,来比较一下两则的异同. 我们就在以下平台上比较吧: STMicoelectronics ...

  8. 嵌入式单片机STM32应用技术(课本)

    目录SAIU R20 1 6 第1页第1 章. 初识STM32..................................................................... ...

  9. 第4章 初识STM32

    第4章     初识STM32 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege ...

随机推荐

  1. hdu 5093 Battle ships(二分图最大匹配)

    题意: M*N的矩阵,每个格子上是三个之一:*.o.#.                     (1 <= m, n <= 50) *:海洋,战船可以停在上面.      o:浮冰,战船 ...

  2. WPF_05_路由事件

    路由事件 WPF用更高级的路由事件替换普通的.NET事件.路由事件具有更强传播能力,可在元素树中向上冒泡和向下隧道传播,并沿着传播路径被事件处理程序处理.与依赖属性一样,路由事件由只读的静态字段表示, ...

  3. newusers 拷贝服务器A上的用户,批量添加到其它服务器

    服务器B 需要添加多个用户,要求与服务器A 的用户列表一致 1.拷贝服务器A 上的 /etc/passwd 中用户信息,用user1-10为例 #grep ^user /etc/passwd > ...

  4. Spring Cloud Gateway 整合阿里 Sentinel网关限流实战!

    大家好,我是不才陈某~ 这是<Spring Cloud 进阶>第八篇文章,往期文章如下: 五十五张图告诉你微服务的灵魂摆渡者Nacos究竟有多强? openFeign夺命连环9问,这谁受得 ...

  5. Django 中间件 详细总结

    一.什么是中间件 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎实用,用不好会影 ...

  6. mysql批量修改某一列的值为另外的值

    sql语句 UPDATE tb_info SET org_id = 2170 WHERE org_id = 815

  7. Python知识整理(一)

    一.Python交互模式(终端上进行) python # 进入到Python交互模式,提示符是 >>> exit() # 退出Python交互模式 python xxx.py # 执 ...

  8. 【JAVA】笔记(7)--- 数组精讲

    数组的静态初始化: 1.一维数组: int [ ] arr = { 1,2,3,4 } ; Object [ ] arr = {   new Object ( ) , new Object ( ) , ...

  9. vue开发中的一些简单骚操作

    在开发过程中,我们可以定义很多参数,这时需要通过不同的操作来改变不同的参数,这就比较复杂了, 虽然不难,但是代码多了也不好看,这时我们就可以通过简单的操作就行简化: 1.对象使用方括号 let obj ...

  10. [loj3501]图函数

    $f(i,G)_{x}$为$x$对$i$是否有贡献,即在枚举到$x$时,$i$与$x$是否强连通 事实上,$f(i,G)_{x}=1$即不经过$[1,x)$中的点且$i$与$x$强连通 首先,当存在这 ...