STM32实现一个简单电灯

新建工程的步骤

  • 建立工程文件夹,Keil中新建工程,选择型号
  • 工程文件夹里建立Start、Library、User等文件夹,复制固件库里面
  • 的文件到工程文件夹
  • 工程里对应建立Start、Library、User等同名称的分组,然后将文件
  • 夹内的文件添加到工程分组里
  • 工程选项,C/C++,IncludePaths内声明所有包含头文件的文件夹
  • 工程选项,C/C++,Define内定义USE_STDPERIPH_DRIVER
  • 工程选项,Debug,下拉列表选择对应调试器,Settings,Flash
  • Download里勾选Reset and Run

下面来说一下具体步骤:

一、新建工程

使用库函数的方式,需要准备一个STM32 库函数的压缩包

新建一个基于标准库的工程

新建一个文件夹叫工程模板放本次项目

固件库获取:

https://pan.baidu.com/s/1bRC6MWtC7jxyKTCUmBCnRQ?pwd=v4tw

然后找到:

固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3

\DeviceSupport\ST\STM32F10x\startup\arm下的就是STM32的启动文件

STM32程序就是从启动文件开始执行的。

将这些文件都拷贝到工程模板中,但是这样全放进去太乱了,可以新建一个文件夹叫start。

返回到STM32F10x目录

stm32f10x.h是用来描述STM32有哪些寄存器和他对应的地址的。

system_stm32f10x.csystem_stm32f10x.h是用来配置时钟的

STM32主频72MHZ,就是system文件里的函数配置的。

将这三个文件复制下来也粘贴到start文件夹下。

这两个cm3-(Cortex-M3)文件就是内核的寄存器描述.当然他还带了一些内核的配置函数,所以多了个:c文件,我们把它俩一并复制下来也粘贴到start文件夹下。

到此为止工程的必要文件就复制完成了。

返回Keil软件

双击start

点击All files

选择启动文件

按住CTRl选择这三个然后点击Add

然后点击close。

这个图标代表只读文件。

最后在工程选项里添加上这个文件夹的头文件路径,否则软件找不到.h文件

点击

添加main函数看工程是否可行。

进入工程模板文件夹,新建文件夹叫User.

右键添加组

改名为User

右键添加新文件

界面右击

然后编写一个main函数,这里注意main函数是一个int型返回值,void参数的函数。还有文件的最后一行必须要是空行,要不然会报警告。

复制代码
#include "stm32f10x.h"                  // Device header

int main(void)
{
    while(1)
    {

    }
}

点击构建,编译并建立工程

二、两种电灯方法

寄存器

复制代码
#include "stm32f10x.h"                  // Device header

int main(void)
{
	RCC->APB2ENR = 0x00000010;//打开GPIOC的时钟
	GPIOC->CRH = 0x00300000;
	//GPIOC->ODR = 0x00000000;//亮
	GPIOC->ODR = 0x00002000;//灭
	while(1)
	{
		
	}
} 

库函数

新建库文件夹

misc是内核的库函数,其他的是内核外的外设库函数。

全部复制到Library中。

这些是库函数的头文件件全部复制到Library中。

这三个复制到工程的User下。

宏定义方法:

滑到8296行

库函数的工程建法:

相关推荐
驴友花雕5 小时前
【花雕动手做】行空板 K10 系列实验之人工智能语音识别小车的10个参考案例
人工智能·单片机·嵌入式硬件·语音识别·行空板 k10 系列实验·花雕动手做·小车的10个参考案例
hsjiasb5 小时前
FreeRTOS学习(二十七)——任务栈与栈溢出检测
开发语言·stm32·学习·学习笔记·freertos
日拱一卒的小田11 小时前
ZYNQ学习笔记3-ZYNQ的IIC控制器1
笔记·单片机·学习
cardinal_50812 小时前
STM32MP157F-DK2开发板构建交叉编译链
stm32·单片机·嵌入式硬件
小羊先生car12 小时前
F429-HAL-RS485(回环/双机实验)(2026/8/16)
c语言·单片机·嵌入式硬件·软件构建
木白CPP12 小时前
Linux 驱动UART子系统源码分析
linux·运维·服务器·驱动开发·嵌入式硬件·开源软件
zlinear数据采集卡14 小时前
数据采集卡从入门到精通(10):采样率与分辨率的核心关系——反比律、架构分布与过采样
arm开发·嵌入式硬件·算法·fpga开发·架构·开源
水果里面有苹果16 小时前
33-TPS62130RGTR-3A降压器
嵌入式硬件
振南的单片机世界17 小时前
推挽vs开漏:一个“强拉硬灌”,一个“只拉不管”
arm开发·stm32·单片机·嵌入式硬件
小心亦新17 小时前
STM32学习23--I2C-1
stm32·嵌入式硬件·学习