1. 开箱初体验为什么选择NANO STM32F1开发板第一次拿到NANO STM32F1开发板时最让我惊喜的就是它板载的ST-LINK调试器。这意味着你不需要额外购买几十块的下载器也不用折腾CH340串口驱动一根USB线就能完成供电、下载、调试所有操作。对于预算有限的学生党或者刚入门的开发者来说这种开箱即用的设计实在太友好了。这块开发板的核心是STM32F103C8T6芯片属于ARM Cortex-M3内核72MHz主频64KB Flash和20KB RAM。虽然参数看起来不高但实际跑个RTOS或者做物联网终端设备完全够用。我实测用Keil5开发环境编译一个简单的跑马灯程序编译时间不到3秒下载速度也很快对于初学者来说完全够用。板子的布局很紧凑所有GPIO口都通过2.54mm间距的排针引出方便接各种传感器模块。特别值得一提的是板载的8MHz晶振和32.768kHz低速晶振都是焊好的不需要自己额外焊接这点比某些需要自己焊晶振的开发板省心多了。2. 开发环境搭建从零开始配置Keil52.1 Keil MDK安装与注册Keil MDK是ST官方推荐的开发环境虽然界面看起来有点老旧但稳定性确实没得说。安装包大概800MB左右建议去官网下载最新版本。安装过程中有个坑要注意默认路径不要带中文和空格我就因为装在Program Files (x86)目录下吃过亏。安装完成后需要注册这里有个小技巧以管理员身份运行Keil然后在File-License Management里输入注册码。如果遇到Invalid Computer ID的报错试试关闭杀毒软件再操作。注册成功后记得在Pack Installer里安装STM32F1系列的设备支持包这一步很多人会忽略。2.2 ST-LINK驱动安装实战虽然Windows 10之后系统通常能自动识别ST-LINK但为了稳定性我还是建议手动安装官方驱动。在开发板配套资料里找到ST-Link 官方驱动.zip解压后根据系统位数选择安装64位系统运行dpinst_amd64.exe32位系统运行dpinst_x86.exe安装完成后用USB线连接开发板在设备管理器里应该能看到STMicroelectronics STLink dongle。如果显示黄色感叹号试试右键更新驱动手动指定到刚才解压的驱动目录。我遇到过几次驱动冲突的情况解决方法是在设备管理器里先卸载异常设备拔掉USB线重新插上让系统自动识别。3. Keil工程配置详解3.1 新建工程与芯片选择打开Keil点击Project-New μVision Project建议新建一个专门的文件夹存放工程。芯片选择时搜索STM32F103C8注意别选成C6或CB型号。有个细节要注意弹出的Manage Run-Time Environment对话框里需要勾选这几个核心组件CMSIS下的COREDevice下的StartupSTM32F1xx_DFP下的GPIO和RCC我第一次用时没选Startup结果编译总是报错后来发现是缺少了启动文件。工程建好后建议立即设置输出目录在Options for Target-Output里勾选Create HEX File这样后面下载时会方便很多。3.2 调试器参数配置点击魔术棒图标进入Options切换到Debug选项卡选择ST-Link Debugger点击SettingsPort选择SW实测JTAG模式经常识别不到设备在Flash Download里勾选Reset and Run这样下载后程序会自动运行这里有个实用技巧在Utilities选项卡里取消勾选Use Debug Driver然后选择ST-Link Debugger并勾选Update Target before Debugging。这样可以避免每次下载前手动擦除芯片的麻烦。4. 第一个程序跑马灯实战4.1 GPIO初始化代码编写新建main.c文件先包含必要的头文件#include stm32f10x.h #include stm32f10x_gpio.h #include stm32f10x_rcc.h然后定义LED连接的GPIO口以PC13为例void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Pin GPIO_Pin_13; GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; GPIO_Init(GPIOC, GPIO_InitStructure); }4.2 主循环实现跑马灯效果在main函数中添加延时函数和LED控制逻辑void Delay(uint32_t nCount) { for(; nCount ! 0; nCount--); } int main(void) { LED_Init(); while(1) { GPIO_SetBits(GPIOC, GPIO_Pin_13); Delay(0xFFFFF); GPIO_ResetBits(GPIOC, GPIO_Pin_13); Delay(0xFFFFF); } }这个简单的延时函数虽然不精确但对于第一个实验足够了。后期可以用SysTick定时器实现更精确的延时。5. 程序下载与调试技巧5.1 一键下载流程代码写好后点击工具栏的Build按钮或按F7编译。如果一切正常输出窗口会显示0 Error(s), 0 Warning(s)。这时点击Load按钮或按F8Keil会自动完成以下操作擦除芯片Flash烧录程序复位芯片运行下载过程中开发板上的ST-LINK指示灯会快速闪烁下载完成后LED就会开始闪烁。如果遇到下载失败首先检查USB连接是否正常然后看看Options for Target-Debug里的设置是否正确。5.2 常见问题排查No ST-LINK detected检查驱动是否安装正确USB线是否插稳尝试重新插拔开发板Flash Download failed在Flash Download配置里确认芯片型号是STM32F10x Medium-density程序下载后不运行检查是否勾选了Reset and Run或者手动按一下板子的复位键Keil卡死在下载界面关闭Keil拔掉USB线重新插上再试我遇到过最诡异的问题是下载速度异常慢后来发现是USB线质量太差换了一根原装线就正常了。所以硬件问题也不能忽视。