赞
踩
无人问津也好,技不如人也罢,都应静下心来,去做该做的事。
最近在学STM32,所以也开贴记录一下主要内容,省的过目即忘。视频教程为江科大(改名江协科技),网站jiangxiekeji.com
如果已经安装keil5 C51,可以放在同一个安装目录下,这样MDK和C51就可以共存。
安装时间较久,耐心等待即可。
因为ARM芯片型号太多,可选择特定的支持包安装
新建工程-Software Packs(为STM32系列支持包)
新建工程-Legacy Device Database(为C51系列支持包)
双击安装STM32F1XX即可
防止以后开发新的芯片找不到型号
需联网,下载较慢
国产芯片GD32F103C8
安装完后关掉整个界面即可
然后新建工程选择对应的支持包就好。
点击ADD LIC
此电脑-右键-属性-设备管理器
说明电脑没有安装STLINK的驱动
双击对应的安装即可,设备管理器-通用串行总线 查看到ST-LINK就是安装好了
这个USB转串口的芯片是CH340,和51单片机一样
然后在设备管理器-端口-CH340表示安装成功。
STM32程序编写分三种:
一是寄存器,和C51一样,直接对寄存器配置;
二是库函数,使用ST官方封装好的函数来间接配置寄存器。本教程使用此方法。
三是基于HAL库,用图形化界面快速配置STM32,能快速上手,但会对底层不了解。
以下为库函数的目录
下面开始新建库函数的工程
如D:\software\STM32project
打开keil5 - project - new uVision project -D:\software\STM32project - 新建文件夹(2-1 工程模板)- Project
D:\software\STM32入门教程资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm 把这些启动文件复制到 2-1 工程模板 文件夹 的新建文件夹Start中
D:\software\STM32入门教程资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x的
stm32f10x.h文件是STM32的头文件、
两个system文件是用来配置时钟的,这三个文件同样复制到Start文件中。
D:\software\STM32入门教程资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport的两个cm3文件也复制到Start文件夹
到这里,工程的必要文件已复制完成。
把project-target-Source Group 1的名称改为Start
添加启动文件,选中后点击add
Start文件夹中的.c、.h文件都要添加进来。
这些都是STM32基础的、不需修改的文件。
在2-1 工程模板文件夹中新建User文件夹
插入头文件后,写个main空函数,最后一行要是空行,不然会有警告。
- #include "stm32f10x.h" // Device header
-
- int main(void)
- {
- while(1)
- {
-
- }
-
- }
然后点击build按钮,编译并建造工程,显示0错误、0警告就说明新建工程成功。
CTRL+鼠标滚轮可缩放页面
点击扳手工具,选择UTF8,防止中文乱码;左下角TAP改为4
点击魔术棒-debug-选择STLINK下载
点击settings
确认后重新编译一次,无错误即可点击load,下载程序进STM32
这里的步骤是为了使用库函数,需要做的一些操作。
在2-1 工程模板文件夹中新建Library文件夹
D:\software\STM32入门教程资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src中的文件都是库函数的源文件,把这些文件都复制到Library文件夹
D:\software\STM32入门教程资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc中的文件都是库函数的头文件,也把这些文件都复制到Library文件夹
回到keil5,同样在target右键,添加组Library,右键添加已存在的文件,打开Library,CTRL+A,ADD。
还需再添加一个文件才能使用库函数,D:\software\STM32入门教程资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template的这三个文件复制到User文件夹中,并在keil5的User组中添加进来
还需要一个宏定义才能用库函数, 在stm32f10x.h中找到字符串(USE_STDPERIPH_DRIVER)复制,粘贴在魔术棒 - C/C++ - Define中,这样就可包含在库函数中。
同样,在魔术棒 - C/C++ - Include paths中添加User和Library的路径
点击三个箱子的按钮,可以移动target组的位置
这里用PC13点亮STM32核心板上的灯为例子
- #include "stm32f10x.h" // Device header
-
- int main(void)
- {
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//配置时钟(选择外设,选择状态)
- GPIO_InitTypeDef GPIO_Initstructure;//定义GPIO结构体
- GPIO_Initstructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Initstructure.GPIO_Pin = GPIO_Pin_13;
- GPIO_Initstructure.GPIO_Speed = GPIO_Speed_50MHz;
- // GPIO_SetBits(GPIOC,GPIO_Pin_13);//将PC13设为高电平
- GPIO_ResetBits(GPIOC,GPIO_Pin_13);//将PC13设为低电平
- GPIO_Init(GPIOC,&GPIO_Initstructure);//配置端口模式(选择哪个GPIO,参数的结构体)
- while(1)
- {
-
- }
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。