当前位置:首页 > 公众号精选 > 程序员小哈
[导读]学习目标 STM32F103C8T6芯片简介 核心板原理图 搭建流水灯电路 修改工程模板 代码实现 成果展示 资料获取 推荐阅读 后台网友建议制作一个流水灯,正好发现自己有之前购买的STM32F103C8T6核心板,今天搭建一个流水灯,正好学习一下STM32 GPIO输出如何实现,将

  • 学习目标

  • STM32F103C8T6芯片简介

  • 核心板原理图

  • 搭建流水灯电路

  • 修改工程模板

  • 代码实现

  • 成果展示

  • 资料获取

  • 推荐阅读



后台网友建议制作一个流水灯,正好发现自己有之前购买的STM32F103C8T6核心板,今天搭建一个流水灯,正好学习一下STM32 GPIO输出如何实现,将来驱动蜂鸣器、继电器等都会使用的。


流水灯相当于计算机语言中的“Hello World”,照着做一遍,实现了它,基本你就入门了。


学习目标

  • STM32F103C8T6最小系统板的使用

  • 面包板搭建流水灯电路的方法

  • 将STM32F103RCT6工程模板修改为STM32F103C8T6的工程模板

  • 熟悉STM32 单片机GPIO作为输出的使用方法


STM32F103C8T6芯片简介

根据STM32&STM8产品型号命名规则(参考:STM32单片机最小系统详解)可知:
STM32F103C8T6这个命名中:

  • STM32代表STM32家族,32位MCU;

  • F代表产品类型为基础型;

  • 103代表特定功能为STM32基础型;

  • C代表引脚数为48&49引脚;

  • 8代表内存容量为64KB;

  • T代表封装为QFP;

  • 6代表温度范围为-40到+85℃。


核心板原理图


通过原理图我们可知:

  • 板子供电有两种方式:

  1. 通过U3 USB-micro接口提供5V供电,然后经过板载的LDO芯片转为VCC3V3;

  2. 通过P2 接口,即SWD下载接口中的VCC3V3给核心板供电。

  • 核心板上有两个LED,其中一个为电源指示灯PWR,另外一个LED与PC13引脚相连,当PC13置高时,LED灭;当PC13置低时,LED亮;

  • 核心板上的跳线是为了选择启动模式使用。我们为了让程序以主闪存存储器作为启动区域,需要将BOOT0置低,BOOT1随意,此种启动模式是最常用的用户FLASH启动,为默认启动模式;

  • 核心板上的按键为RESET复位按键;

  • P2接口为SWD下载模式对应的引脚接口;


  • 搭建流水灯电路

    1. 准备元器件

    注意:
    电阻使用的是2K,作为限流使用;
    LED注意正负极,直插发光二极管,引脚长的为正极,短的为负极;如果引脚被剪过了,一样长了,查看发光二极管管体内部金属极大小,金属极较小的是正极,大的片状的是负极。

    1. 搭建电路
      按照如下原理图搭建电路


    搭建完毕效果图


    修改工程模板

    在基于STM32固件库的MDK5工程建立基础上,将STM32F103RCT6工程模板修改为STM32F103C8T6的工程模板。

    修改点:

    1. 替换启动文件,将startup_stm32f10x_hd.s更换为startup_stm32f10x_md.s,startup_stm32f10x_md.s为中等容量产品使用的启动文件,对应FLASH的大小范围为:64K≤FLASH≤128K。



    1. 修改全局宏定义,将STM32F10X_HD修改为STM32F10X_MD。



    1. 更改使用的芯片型号



    1. 设置下载的Flash容量


    注意:
    网上说STM32F103C8T6和STM32F103CBT6 是在同一圆晶上制造的,但测试时,只测试手册提供的参数范围所包含的内容,也就意味着 STM32F103C8T6也是128k Flash,只不过只测试了前面64k,然后打上 STM32F103C8T6标注(当然内部就写上 C8T6 的 ID);所以我们在添加Flash的时候,只能找到128K的STM32F103,而找不到64K的Flash。


    代码实现

    1. 设置PA5、PA6、PA7为输出

    GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);


    1. 初始化GPIO为高电平,高电平的时候,LED灭

    GPIO_SetBits(GPIOA,GPIO_Pin_5);GPIO_SetBits(GPIOA,GPIO_Pin_6);GPIO_SetBits(GPIOA,GPIO_Pin_7);


    1. 流水灯代码具体实现

    #include "stm32f10x.h"
    void Delay(u32 count){ u32 i=0; for(;i<count;i++);}
    int main(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_SetBits(GPIOA,GPIO_Pin_5); GPIO_SetBits(GPIOA,GPIO_Pin_6); GPIO_SetBits(GPIOA,GPIO_Pin_7); while(1) { GPIO_ResetBits(GPIOA,GPIO_Pin_5); GPIO_SetBits(GPIOA,GPIO_Pin_6); GPIO_SetBits(GPIOA,GPIO_Pin_7); Delay(1000000);Delay(1000000);Delay(1000000); GPIO_SetBits(GPIOA,GPIO_Pin_5); GPIO_ResetBits(GPIOA,GPIO_Pin_6); GPIO_SetBits(GPIOA,GPIO_Pin_7); Delay(1000000);Delay(1000000);Delay(1000000); GPIO_SetBits(GPIOA,GPIO_Pin_5); GPIO_SetBits(GPIOA,GPIO_Pin_6); GPIO_ResetBits(GPIOA,GPIO_Pin_7); Delay(1000000);Delay(1000000);Delay(1000000); }}


    成果展示


    资料获取

    微信公众号后台回复“流水灯”,可以下载工程源码。
    微信公众号后台回复“STM32F103核心板”,可以下载STM32F103C8T6核心板资料


    推荐阅读

    STM32单片机最小系统详解

    基于STM32固件库的MDK5工程建立

    修改Keil工程名称并添加其他模块文件




    喜欢请关注微信公众号:程序员小哈
    若觉得本次分享的文章对您有帮助,随手点[在看]并转发分享,也是对我的支持。




    公众号内容面向在校大学生、电子爱好者、嵌入式工程师;
    涉及电子制作、模块使用、单片机技术、物联网相关知识分享;
    软硬件全栈工程师,玩模块,学硬件,带你从0走到1


    免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
    换一批
    延伸阅读

    对于 CL1 和 CL2,建议使用 5pF 至 25pF 范围(典型值)的高质量外部陶瓷电容器,专为高频应用而设计,并根据晶体或谐振器的要求进行选择(见图24)。CL1 和 CL2 通常大小相同。晶体制造商通常会指定负载...

    关键字: STM32F103 晶振 电容

    摘 要:给出了一种低功耗可刷卡健康手环的设计方法。该设计为了实现手环的多功能化,采用低功耗嵌入式单片机STM32F103为主控制器,并结合了心率传感器、Mifare 1 S50卡、GPS模块、GSM模块以及电源管理模块,...

    关键字: STM32F103 低功耗 心率监测 集成射频卡

    做过很多Bootloader升级的产品,感觉Bootloader还是很有意思的。通过芯片的一段程序,去更新剩余的程序。从而达到更新产品软件的作用。芯片自带的Bootloader是通过芯片厂家的协议,通过烧录器把程序更新到...

    关键字: Bootloader SD卡 STM32F103

    串口通讯简介: 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,因此大部分电子设备都支持该通讯方式。 通讯结构 设备内部一般以TTL电平传输,设备之间是通过RS23...

    关键字: 串口 STM32F103

    1 、什么是 WIFI DTU? 1.1 、什么是 DTU ? DTU (Data Transfer unit),是专门用于将串口数据转换为 IP 数据或将 IP 数据转换为串 口数据通过无线通信网络进行传送的无线终端设...

    关键字: STM32F103 上位机

    一、iLook项目的历程: 2013年开始设计iTrack+yeelink,由于各种原因,该项目夭折。 2014年年初开始提出面向产品的开源平台:iLook 2015年5月发起iLook.爱路客 2015年8月发起iLo...

    关键字: 开源 STM32F103

    笔者能力有限,如果文中出现错误的地方,还希望各位朋友能够给我指出来,我将不胜感激,谢谢~ 引言 数字信号在我们生活中随处可见,自然而然地就会涉及到对于数字信号的处理,最为典型的一个应用就是示波器,在使用示波器的过程当中,...

    关键字: STM32F103

    好久没更新文章了,看看又做了什么些好玩的东西。 文章目录 前言 开发板的选择 获取疫情数据API接口 ESP8266发送HTTPS请求 LCD显示 代码下载 在其他MCU上的实现 前言 2020,新冠肺炎疫情在全球蔓延,...

    关键字: MCU STM32F103

    电路仿真软件的使用越来越多,大家对电路仿真软件也越来越了解。该系列对于电路仿真软件的介绍均基于proteus软件,本文针对电路仿真软件的讲解同样不例外。本文中,主要介绍电路仿真软件proteus和Keil软件进行流水灯电...

    关键字: proteus 指数 流水灯 电路仿真软件

    我用的开发板是天翔电子的TX-1C,单片机是STC89C52RC。

    关键字: 单片机 流水灯
    关闭
    关闭