硬件连接
使用的是带板载CH340的STM32F103C8T6最小系统板,直接通过图中左上角Micro USB接口连接到电脑即可,如果是外接串口模块,务必把串口模块的TX连接到PA10,RX连接到PA9,因为STM32只能通过USART1进行ISP下载。
软件设置
下载串口驱动
下载地址:CH340驱动
下载完毕后双击.exe文件安装即可
安装完毕后,连接硬件,打开电脑设备管理器,可以看见如下图所示成功识别到CH340串口(单片机端必须连接到电脑后才会显示),端口号是COM8(不同电脑分配端口号可能不同),即为驱动安装成功。
下载烧录软件
STM32可以通过FlyMcu软件实现串口烧录。
这是一款绿色软件,无需安装,解压后点击.exe文件即可使用,软件开始界面如下图:
点击搜索串口,自动搜索已连接的串口。
通过窗口上方选项卡可以自由设置串口端口和串口传输波特率(bps),其中波特率默认为115200bps,由于在前面设备管理器中看见CH340连接到COM8,故这里手动把端口设为COM8。
根据单片机型号设置复位模式和BootLoader,对于STM32F103C8T6,选择RTS的低电平复位,DTR高电平进BootLoader即可。
烧录验证
通过串口烧录首先需要编译程序生成.HEX文件:
打开Keil工程,这里我写了一个通过按键控制LED灯亮灭的简单程序:
while (1)
{
/* USER CODE END WHILE */
if(HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin)){
HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET);
}else{
HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET);
}
/* USER CODE BEGIN 3 */
}
按键按下,LED灯亮,按键抬起,LED灯熄灭。
打开Keil编译配置窗口(魔术棒)。
在Output选项卡下勾选Create HEX File,点击OK保存配置并退出。
HEX文件生成路径即为图中显示路径,一般在编译后产生的工程同名文件夹下(这里的工程名为GPIO)。
点击Build编译工程,成功编译后打开工程所在目录,选择工程同名文件夹,显示可以找到.hex文件。在烧录工具FlyMcu中选择对应路径下的文件。
点击开始编程,此时发现软件一直卡在开始连接界面,如图:
这是因为这款最小系统板没有独立连出Boot引脚可以手动调节,而是把两个Boot引脚均通过一个10k电阻下拉到GND(如下图原理图),单片机在上电后读取到Boot0=0,Boot1=0直接进入内置Flash中。
故需要通过按下Reset复位,使得单片机重新读取Boot值进入BootLoader,之后便能显示成功烧录,如下图:
但是此时发现单片机未能像前程序预设一样通过按键控制LED灯的亮灭,原因是此时任然停留在BootLoader模式下,需要按下reset按键复位单片机,使之再次读取Boot引脚从而退出BootLoader模式,然后便能正确执行代码逻辑。