STM32实战(一)
开个新坑,主要是跑跑STM32的一些例程。
参考视频:https://www.bilibili.com/video/BV1th411z7sn?spm_id_from=333.788.videopod.episodes&vd_source=c24105e108b49712d5e90c5df302d797&p=4
-
环境搭建
keil5->
新建工程->
选择STM32F103C6->
固件库下STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm(启动文件)下所有文件放在工程目录下Start文件夹下->
STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x下几个.c.h文件(描述外设寄存器的文件和用于配置系统时钟的文件)放在Start文件夹下->
STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport下两个文件(描述内核寄存器的文件)也放在Start文件夹下->
选择_md.s的启动文件以及刚刚选上的那些.c.h文件->
添加Start路径->
新建User文件夹,添加组User,新建main.c。 -
下载到开发板
我这里只有一条usb转串口的线,所以先暂时用串口下载程序,开发板上的跳线帽BOOT0接1,BOOT1接0。
RXD->A9 TXD->A10
再编译发现报错Start/core_cm3.c(479): error: non-ASM statement in naked function is not supported
编译器版本问题
魔术棒->target->编译器版本选择v5而不是v6。
又出现报错*** Target 'Target 1' uses ARM-Compiler 'Default Compiler Version 5' which is not available.
需要重新下载v5版本的编译器,安装到keil安装目录下的ARM文件夹。
然后添加组件


选上刚刚的编译器安装目录就行了。
编译时需要生成hex文件


成功。
- 添加库函数
创建Library。
固件库\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src和\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc下所有文件都拷贝到Library下。
固件库\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template下conf和it文件复制到工程User目录下。

#include "stm32f10x.h" // Device header
int main(void)
{
// RCC->APB2ENR = 0x00000010;
// GPIOC->CRH = 0X00300000;
// GPIOC->ODR = 0x00000000;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_SetBits(GPIOC, GPIO_Pin_13);
//GPIO_ResetBits(GPIOC, GPIO_Pin_13);
while(1)
{
}
}
- 工程架构


浙公网安备 33010602011771号