ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

新建工程和烧录

新建工程和烧录 STM32F103C8T6 最小系统板详解STM32F103C8T6 最小系统板是嵌入式开发领域中最经典、使用最广泛的入门级硬件平台之一几乎是每一位嵌入式工程师的第一块板子。下面从芯片本身、板载资源、开发方式和应用场景几个方面进行详细介绍。核心芯片参数STM32F103C8T6 由意法半导体ST生产基于ARM Cortex-M332位 RISC 内核主要规格参数规格内核ARM Cortex-M3最高主频72 MHzFlash64 KBSRAM20 KB工作电压2.0V ~ 3.6V封装LQFP487mm × 7mmGPIO37个大部分支持5V容限工作温度-40°C ~ 85°C片上外设资源这颗芯片集成了非常丰富的外设足以应对绝大多数中低复杂度项目通信接口3个 USART、2个 SPI、2个 I²C、1个 CAN 总线、1个 USB 2.0 全速接口定时器3个16位通用定时器TIM2/TIM3/TIM4、1个高级控制定时器TIM1支持PWM死区生成、1个 SysTick 定时器模拟外设2个12位 ADC共10通道1MHz采样速率无 DACDMA7通道 DMA 控制器看门狗独立看门狗 窗口看门狗低功耗模式Sleep / Stop / Standby 三种模式VBAT 引脚支持 RTC 掉电保持最小系统板的组成所谓最小系统是指让 MCU 能够正常启动、运行和下载程序所需的最精简外围电路。一块典型的 STM32F103C8T6 最小系统板包含以下六大核心模块电源电路通常通过 Micro-USB 或 Type-C 接口输入 5V经AMS1117-3.3VLDO 稳压芯片降压为 3.3V 供 MCU 使用。输入/输出端各配有 10μF 电解电容和 0.1μF 陶瓷电容进行滤波去耦。时钟电路板上有两颗晶振8MHz 主晶振HSE经内部 PLL 倍频至 72MHz 作为系统主时钟32.768kHz 低速晶振LSE专供 RTC 实时时钟使用复位电路由 10kΩ 上拉电阻 100nF 滤波电容 手动复位按键组成确保上电时产生可靠的高电平复位脉冲≥10ms。启动模式配置BOOT通过 BOOT0/BOOT1 跳线帽选择启动方式BOOT0 0日常使用从主 Flash 启动正常运行程序BOOT0 1从系统存储器启动用于串口 ISP 下载当 SWD 引脚被占用时的救急方案SWD 调试接口一个 4 针接口SWDIO / SWCLK / GND / 3.3V用于连接 ST-Link 或 DAP 下载器支持高速下载和在线断点调试。板载指示电源 LED上电即亮指示供电状态PC13 LED连接在 PC13 引脚上的用户 LED新手点灯入门程序的操作对象所有 GPIO 通过 2.54mm 标准排针引出方便用杜邦线连接各种外围模块。开发方式开发工具IDEKeil MDK、IAR、STM32CubeIDEST 官方免费下载/调试器ST-Link V2、J-Link、DAP-Link库函数标准外设库SPL、HAL 库推荐、LL 库或直接操作寄存器程序下载方式SWD 方式推荐通过 SWD 接口连接 ST-Link速度快支持在线调试串口 ISP 方式通过 USB 转 TTL 芯片如 CH340G配合 BOOT0 跳线实现串口下载仅需一根数据线入门第一步新手的第一个程序通常是点亮 PC13 上的 LED——它覆盖了 GPIO 时钟使能、端口模式配置、电平输出等核心知识点是嵌入式开发的Hello World。典型应用场景STM32F103C8T6 最小系统板广泛应用于以下领域嵌入式教学高校和培训机构的标配实验平台工业控制PLC 前端模块、电机驱动、传感器采集物联网终端搭配 ESP8266/ESP32 等 WiFi 模块实现 IoT 节点消费电子智能家居控制器、无人机飞控、机器人电子竞赛全国大学生电子设计竞赛常用平台快速原型验证项目开发前期的功能验证为什么它如此流行STM32F103C8T6 最小系统板之所以成为国民级开发板核心原因在于性价比极高芯片单价仅数元人民币整板价格通常在 10~20 元生态完善ST 官方提供完整的 HAL 库、CubeMX 配置工具社区教程和开源项目极其丰富资料齐全中英文数据手册、参考手册、应用笔记一应俱全扩展性强37 个 GPIO 全部引出可灵活搭配 OLED、传感器、电机驱动等各类模块承上启下掌握这块板子后可以无缝迁移到 STM32F4、STM32H7 等更高性能型号外设三者的区别片上外设集成在 STM32 芯片硅片内部的功能模块ADC、UART、定时器……出厂即存在通过配置寄存器使用。板上外设焊接在最小系统板 PCB 上的器件出厂时就固定在板子上——比如 AMS1117 稳压芯片、晶振、复位电路、LED、SWD 排针等。它们和 MCU 一起构成最小系统少了任何一个芯片都无法正常工作。外部扩展模块用户后续通过排针/杜邦线/排母自行连接上去的独立模块——ESP32、OLED 屏幕、传感器、电机驱动板等都属于这一类。1.1什么是项目项目是代码 编译流程构建规则的集合项目是你在电脑上维护的整个开发工程源代码 配置 库 构建规则烧录的程序只是项目经过编译链接后产出的那个二进制文件。项目是生产过程程序是最终产品1.2 项目的作用项目的作用就是把你写的代码组织起来让工具能把它变成芯片能执行的程序。1.3如何创建项目1.4.1库函数目录介绍_htmrescHTML 资源文件夹。里面装的是帮助文档用的图片、CSS 样式等跟你写代码完全无关可以忽略。Libraries⭐最重要库文件目录里面是 ST 官方帮你写好的底层驱动代码STM32F10x_StdPeriph_Driver/—— 外设驱动源码GPIO、USART、TIM、ADC 等每个外设都有对应的.c和.h文件CMSIS/—— ARM 内核标准接口文件 芯片寄存器定义头文件你调用GPIO_Init()这种函数实际执行的代码就在这里面。Project⭐官方示例项目目录里面是 ST 官方用这个库做好的完整工程案例。每个外设都有一个对应的示例比如GPIO/IOToggle—— GPIO 翻转 LED 示例USART/Interrupt—— 串口中断通信示例新手最好的学习方式直接拷贝一个示例项目改改就能用。Utilities工具文件目录包含一些评估板EVAL 板、Discovery 板上的外设驱动比如 LCD 屏驱动、加速度传感器驱动等。如果你用的不是官方评估板基本用不到。Release_Notes发布说明HTML 文件记录这个库的版本历史、修复了哪些 bug、支持哪些芯片型号。stm32f10x_stdperiph_lib_um用户手册HTML 帮助文档19MB 那个。里面有每个库函数的使用说明相当于字典。创建项目介绍1.创建一个空的文件夹英文路径2.打开keil5然后点击新建项目如下图3.选择第一步创建的文件夹如下图4.在内部创建一个纯英文路径别问为什么英文问就是容易出错误被坑了5.然后给工程文件起名此工程名称不方便改6.然后点击保存后选择器件型号根据你使用的型号来选这里选择的是stm32103c8t6)(然后点击ok即可7.然后关掉这个没什么用8.找到刚才下载的对应的文件然后找到这些启动文件9.把上图的文件复制到刚才新建的项目中新建一个名称为start的文件夹然后复制进去10.然后把这三个文件也复制到start文件夹中stm32f10x.h— 芯片的字典620 KB最大把芯片手册上所有寄存器的地址、位定义翻译成 C 语言代码system_stm32f10x.c— 系统初始化里面最核心的是SystemInit()函数芯片刚启动时自动执行做两件事配置系统时钟—— 决定 CPU 跑多快比如 72MHz配置 Flash 等待周期—— 让 Flash 读写跟上 CPU 速度芯片上电后先跑启动文件startup_xxx.s启动文件第一件事就是调用SystemInit()然后才跳到main()。system_stm32f10x.h — system_stm32f10x.c 的声明声明 SystemInit() 函数和一些系统时钟相关的全局变量然后是内核的寄存器也复制进去如图复制到start文件夹中11.打开keil5,选中刚才的项目文件改名为Start(单击即可12.选择已经存在的文件到组中从上到下第三个13.然后选择刚才的start文件夹中的这个md.s文件选择所有文件后可以看到14.然后按住多选把所有的.c和.h和md.s全部选中然后点击add即可然后点击close15.添加成功后的结果如下图16.添加头文件路径16.1点击魔术棒16.2新建路径16.3选择文件夹17.回到刚才的文件夹中然后新建一个User的文件夹18.在keil点击target1然后点击add gtoup新建文件夹然后把刚才新建的User文件夹添加进去18.2点击 add New ITEM to group user18.3添加新文件选择c文件路径选择刚才的user文件夹19.选择stm3210x.h20.补上main函数21.然后点击箭头指向的按钮编译并且建立工程21.然后调节字体大小最后点击ok即可21.修改编码为utf-8还是点击扳手的图标-然后选择第二个如下图然后使用工具烧录代码到stm32中使用ST-LINK来烧录程序先看图从上到下1.3v3电源2.SWIO 数据线3.SWCLK 时钟线4.GND 地线然后对照stlink的数据手册swg)按照1-2-3-4-5-6的顺序依次翻译为中文图中顺序为准1.VTref是目标参考电压用于J-Link调试器检测目标板电源并进行逻辑电平匹配。和这里的SWD模式无关3.3v电源插入192.NC Not Connected意思是不接。ST-Link 上标着 NC 的引脚内部没有连接任何东西直接忽略不用接线3.Not used 未使用和 NC 一个意思不用接线跳过就好。4.GND Ground中文就是地线人话接板子上的GND5.Not used 未使用和 NC 一个意思不用接线跳过就好。6.GND Ground中文就是地线人话接板子上的GND7.SWDIO Serial Wire Debug Input/Output中文就是串行调试数据线。连接板子的数据线8.GND Ground中文就是地线人话接板子上的GND9.SWCLK Serial Wire Debug Clock中文就是“串行调试时钟线”。它负责提供时钟同步信号。人话时钟线10.GND Ground中文就是地线人话接板子上的GND11.Not used 未使用和 NC 一个意思不用接线跳过就好。12.GND Ground中文就是地线人话接板子上的GND13.SWO Serial Wire Output中文叫串行调试输出线。调试用的烧录用不到它也是一个调试相关的引脚但属于高级功能一般用不到14.GND Ground中文就是地线人话接板子上的GND15.RESET 是复位引脚用来远程重启 STM32 芯片。日常烧录 → 可以不接16.GND Ground中文就是地线人话接板子上的GND17.Not used 未使用和 NC 一个意思不用接线跳过就好。18.GND Ground中文就是地线人话接板子上的GND19.3伏电源或3.3V供电连接电源线20.GND Ground中文就是地线人话接板子上的GND然后如下图连接即可22.给stlink/v2安装驱动根据你电脑的型号直接安装即可安装后如下图可以看到安装成功然后配置keil23.然后点击魔术棒然后点击debug24.1还是线点击魔术棒-UtiLities-点击use Debug Driver然后把原本的改为ST-Link Debugger然后再次选择use Debug Driver24.2然后点击ok即可然后点击这个烧录建议线使用官方的样例烧检测硬件是否有问题然后烧录成功即可-控制台不报错即为成功23.下载对应的手册这里换成后续的百度网盘地址资料和对应的代码也放进去24.因为badusb实际上只需要灯和USB电源显示开始另一个灯显示结束总流程1.插入电源电源灯亮2.badusb执行代码3.第二个灯亮所以只看下方的两个图就行了灯(省略——点灯usbd的图连接PA11和PA12)然后官方的不知道为什么无法下载之内从csdn其他人下手册和案例代码这个最后打包到zip中
返回列表