码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • STM32F103RCT6学习笔记1:GPIO认识—点灯


    今日开始快速掌握这款STM32F103RCT6芯片的环境与编程开发,有关基础知识的部分不会多唠,直接实践与运用!文章贴出代码测试工程与测试效果图:

    目录

    STM32F103RCT6参数解读:

    GPIO的基础认识与分类:

    串口相关:

    定时器相关:

    IIC相关:

    ADC相关:

     DAC相关:

     SPI相关:

     其余引脚:

    GPIO基本输出的配置:

    实验设计:

    代码:

    实验效果:

     测试工程下载:

    参考文章:


    STM32F103RCT6参数解读:

    根据STM32命名规则可知,通用类型,增强型,64脚

    256k字节闪存,LQFP封装,工业级温度范围-40~85度。

    GPIO的基础认识与分类:

    拿到一块新的芯片,首先认识与分类它的GPIO是十分重要的,现在尝试认识分类一下:

                                       表格中红色的引脚表示有且只有这一个复用功能

    串口相关:

    TXDRXDCTSRTSCK
    USART1PA9PA10PA11PA12
    USART2PA2PA3PA0-WKUPPA4
    USART3PB10PB11PB13PB14PB12
    USART4PC10PC11
    USART5PC12PD2

    定时器相关:

    CH1CH2CH3CH4ETRBKIN
    TIM1

    PB13(CH1N)

    PA8

    PB14(CH2N)

    PA9

    PB15(CH3N)

    PA10

    PA11PA12PB12
    TIM2

    PA0-WKUP

    (CH1_ETR)

    PA1PA2PA3
    TIM3PA6PA7PB0PB1PD2
    TIM4PB6

    PB7

    PB8PB9
    TIM5PA0-WKUPPA1PA2PA3
    TIM8

    PA7(CH1N)

    PC6

    PB0(CH2N)

    PC7

    PB1(CH3N)

    PC8

    PC9PA0-WKUPPA6

    IIC相关:

    SCLSDASMBA
    IIC1

    PB6

    PB7

    PB5
    IIC2

    PB10

    PB11PB12

    ADC相关:

    IN0IN1IN2IN3IN4IN5
    ADC123PA0-WKUPPA1PA2PA3PA4PA5
    IN6IN7IN8IN9IN10IN11
    ADC123PA6PA7PB0PB1PC0PC1
    IN12IN13IN14IN15
    ADC123PC2PC3PC4PC5

     DAC相关:

    OUT1OUT2OUT3OUT4OUT5
    DACPA4PA5

     

     SPI相关:

    NSSSCKMISOMOSI
    SPI1PA4PA5PA6PA7
    SPI2PB12PB13PB14PB15
    SPI3PB3PB5

     

     其余引脚:

    VBAT:

    备用电池供电的引脚(可接一个3V的电池,当系统断电时,备用电池可以给内部的RTC时钟和备份寄存器提供电源)

    PC13-TAMPER-RTC:

    IO口(可以根据程序输出或读取高低电平)或者侵入检测(做安全保障功能)或者RTC(输出RTC校准时钟、RTC闹钟脉冲或者秒脉冲)

    PC14-OSC32_IN 和 PC15-OSC32_OUT:

    IO口或者接32.768KHz的RTC晶振

    OSC_IN、OSC_OUT:

    接系统的主晶振,一般是8Hz的(芯片内部有锁相环电路,可以对这个8Hz的频率进行倍频,最终产生72MHz的频率,作为系统的主时钟)

    NRST:

    系统复位引脚(N代表低电平复位的)

    VSSA、VDDA:

    内部模拟部分的电源(比如ADC、RC震荡器等),VSS是负极接GND,VCC是正极接3.3V

    PB2:

    IO口或者BOOT1引脚(BOOT引脚是用来配置启动模式的)

    JTCK/SWCLK:

    PA14,IO口或者调试端口,调试程序或者下载程序

    JTDI:

    PA15,IO口或者调试端口,调试程序或者下载程序

    JTDO:

    PB3,IO口或者调试端口,调试程序或者下载程序

    NJTRST:

    PB4,可以复用为普通IO使用

    BOOT0:

    用来做启动配置的

    最后剩下10个引脚都是VSS\VDD相关的供电引脚

    GPIO基本输出的配置:

    这里先配置一下基本的输出---我们在查阅上述分类的表格可以发现,大部分搭载有各种模块功能的引脚都是PA、PB系列的,而PC0~PC5大多功能都只有ADC采样相关这一个复用功能,因此比较适合用来作为普通输入输出口使用:

    实验设计:

    使用PC2周期性点亮熄灭一个灯

    代码:

    Tip: 引脚的初始化与置位方面,可以通过 “|” (或)操作来一次性初始化同一系列的多个引脚

    1. #include "delay.h"
    2. #include "sys.h"
    3. //GPIO_SetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_15|GPIO_Pin_11|GPIO_Pin_10|GPIO_Pin_12|GPIO_Pin_1);
    4. void LED_init(void)
    5. {
    6. GPIO_InitTypeDef GPIO_InitStructure;
    7. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能端口时钟
    8. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
    9. // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_15|GPIO_Pin_11|GPIO_Pin_10|GPIO_Pin_12|GPIO_Pin_1;
    10. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
    11. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度50MHz
    12. GPIO_Init(GPIOC, &GPIO_InitStructure);
    13. }
    14. int main(void)
    15. {
    16. delay_init();
    17. NVIC_Configuration();
    18. LED_init();
    19. while(1)
    20. {
    21. delay_ms(500);
    22. GPIO_SetBits(GPIOC,GPIO_Pin_2);
    23. delay_ms(500);
    24. GPIO_ResetBits(GPIOC,GPIO_Pin_2);
    25. }
    26. }

    实验效果:

     测试工程下载:

    https://download.csdn.net/download/qq_64257614/88357563?spm=1001.2014.3001.5503

     

    参考文章:

    对stm32F103RCT6原理图解析(详细)_ghujlhdrx的博客-CSDN博客

    STM32F103RCT6-64PIN引脚功能表格_stm32f103rct6引脚功能_FLYMCUCN的博客-CSDN博客

     STM32系统结构介绍_stm32的pc13功能_藤椒鱼块的博客-CSDN博客

  • 相关阅读:
    基于Lang-Chain(ChatGLM和ChatChat)知识库大语言模型的部署搭建
    【数据结构与算法】链表OJ练习题
    Vue的三种网络请求方式
    手把手带你学习Scala(三)-Scala运算符和流程控制
    【设计模式】五、原型模式
    shiro会话管理
    DPDK&VPP关键技术文档总结
    腾讯云我的世界mc服务器配置怎么选择?
    自研多模态追踪算法 PICO 为「手柄小型化」找到新思路
    FFmpeg5开发入门教程17:软件解码音频并使用QAudioOutput播放
  • 原文地址:https://blog.csdn.net/qq_64257614/article/details/133022804
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号