1. 硬件准备与连接
拿到STM32开发板的第一件事就是正确连接硬件。我刚开始接触嵌入式开发时,最头疼的就是各种接线问题,特别是电源和下载器的连接。以常见的正点原子开发板为例,通常需要两个关键接口:一个是下载器接口(JTAG/SWD),另一个是USB从设备接口(USBSLAVE)。
下载器接口通常位于开发板背面,标注为JTAG/SWD。这个20针的接口负责程序烧录和调试,需要使用专用的ST-Link或J-Link下载器。连接时要注意引脚对齐,不要用力过猛,否则容易损坏针脚。我刚开始就犯过这个错误,结果导致下载器接口松动,后来只能重新焊接。
电源连接有两种方式:通过下载器供电或独立电源供电。对于简单的GPIO控制实验,通过下载器供电就足够了。但如果要驱动大功率外设(如电机、显示屏),就需要外接电源。我建议初学者先用下载器供电,等熟悉了再考虑外接电源,这样可以避免因电源问题损坏开发板。
实际连接步骤很简单:先用排线连接下载器和开发板的JTAG/SWD接口,再用USB线连接下载器和电脑。最后用另一根USB线连接开发板的USBSLAVE接口和电脑。这时候开发板上的电源指示灯应该会亮起,表示供电正常。如果指示灯不亮,首先要检查USB线是否完好,我遇到过好几次因为USB线接触不良导致无法供电的情况。
2. 开发环境搭建
STM32开发最常用的IDE是Keil MDK,虽然界面看起来有点老旧,但功能非常强大。安装过程需要注意几个关键点:首先要下载正确的设备支持包,比如STM32F1系列需要安装Keil.STM32F1xx_DFP包。我第一次安装时就选错了支持包,结果编译时一直报错,折腾了半天才发现问题。
安装完成后需要配置调试器。在Options for Target -> Debug选项卡中,选择使用的调试器类型(ST-Link Debugger)。然后点击Settings,在Debug选项卡中确认SWD模式被选中,Port选择SW。这里有个小技巧:如果连接不上调试器,可以尝试降低SWD时钟频率,有时候高频信号会受到干扰。
编译器的配置也很重要。我建议使用AC6编译器(ARM Compiler 6),因为它支持最新的C语言标准,代码优化效果更好。在C/C++选项卡中,要确保预处理器定义正确,特别是芯片型号的定义,比如STM32F103xE。还要包含正确的头文件路径,通常需要添加标准外设库或HAL库的路径。
最后配置烧录选项。在Utilities选项卡中,勾选Use Debug Driver,然后进入Settings。在Flash Download选项卡中,要添加正确的Flash编程算法。对于STM32F103ZE,应该选择STM32F10x High-density Flash。如果这里配置错误,可能会导致程序烧录后无法运行。
3. GPIO控制实战
GPIO是嵌入式开发中最基础的外设,控制LED灯闪烁通常是第一个实验。但要让LED灯稳定闪烁,需要理解GPIO的完整配置流程。
首先需要配置GPIO的时钟。STM32的外设都需要先使能时钟才能工作,这是与51单片机最大的区别。以GPIOA为例,使能时钟的代码是:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
接下来配置GPIO的工作模式。STM32的GPIO有8种工作模式,最常用的是推挽输出模式。配置GPIO需要初始化一个GPIO_InitTypeDef结构体:
GPIO_InitTypeDef GPIO_Ini


3646

被折叠的 条评论
为什么被折叠?



