当前位置: 首页 > news >正文

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行

库函数的工程建法:

http://www.dtcms.com/a/108389.html

相关文章:

  • 2023年12月电子学会青少年软件编程四级考级真题—新“跳7”游戏
  • OpenCV
  • 系统与网络安全------Windows系统安全(5)
  • Maya软件中的约束基础:提高角色动画制作效率的关键技术
  • 【解决】Edge浏览器硬件加速问题:无法滚动与卡顿的应对方法
  • Lumerical ------ Edge coupler design
  • Test——BUG篇
  • 掌握 Git 的艺术:Rebase 和 Merge 的使用技巧
  • MySQL 中 LOCK TABLES(手动锁表) 语句的详细说明,包括语法、使用场景、示例代码及注意事项
  • c加加学习之day02
  • ubuntu制做vsftpd的docker镜像
  • git总是链接不成功
  • Excel处理控件Spire.XLS系列教程:C# 打印 Excel 文档
  • 【算法】双指针
  • GIT ---- 解决【fatal: Authentication failed for】
  • 【案例89】达梦数据库优化器参数导致的SQL执行错误
  • 在Ubuntu20.04开发Dify插件教程,部署Dify插件脚手架
  • 深度学习 Deep Learning 第15章 表示学习
  • 针对 MySQL 数据库的详细说明,分类列出临时资源(临时表、游标、未提交事务、会话变量、预编译语句)的创建、清理方式及未清理后果,并以表格总结
  • [CH32] RISC-V汇编指令解释
  • linux下springboot项目守护进程编写
  • arm64平台下linux访问寄存器
  • Python----机器学习(线性回归:前向传播和损失函数)
  • 【C++基础知识】 C 预处理器中的 #line 指令详解
  • RabbitMQ应用2
  • Linux系统之SFTP-搭建SFTP服务器
  • ui-tars和omni-parser使用
  • JavaScript 模块化详解( CommonJS、AMD、CMD、ES6模块化)
  • 网络安全-等级保护(等保) 1-0 等级保护制度公安部前期发文总结
  • 蓝桥杯 web 表格数据转化(组件挂载、模板字符串)