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

STM32新建工程-基于库函数

目录

一、创建一个新工程

二、为工程添加文件和路径

三、创建一个main.c文件,并调试

四、修改一些配置

五、用库函数进行写程序

1、首先加入一些库函数和头文件

2、编写库函数程序


一、创建一个新工程

我这里选择STM32F103C8的型号,然后点击OK。

keil5里面的小助手,暂时不用,叉掉

二、为工程添加文件和路径

在工程模板中还需要添加启动文件、系统头文件、系统时钟文件,创建一个文件夹start,将下面文件都添加里面如下:

由于这个内核的寄存器描述和外围设备的描述文件不是在一起的,所以还需要添加一个内核寄存器的描述文件

然后进入工程中,进行添加文件,将启动文件后缀为md.s加入里面,然后再将剩下的.c和.h文件都加入里面。

对于启动文件补充,如下图,先根据型号进行选择,再根据Flash容量选择对应后缀名的启动文件。如我是使用的是STM32F103C8T6,Flash是64k,所以选择后缀名为md.s的文件。

然后添加系统头文件的路径,点击魔法棒——>C/C++(AC6)——>Include Paths,然后点击右侧小红框。

先点击最左侧的小红框,再选择最右侧的小红框添加头文件的路径,然后点击OK。

三、创建一个main.c文件,并调试

创建main.c 文件,写入下面的代码,会发现头文件会报错,就很纳闷,怎么会有错误呢?

经过查阅资料,进行如下操作,点击魔法棒——>Target——>ARM Compile——>Use default complier version 5,把编译器版本6换成版本5,就解决了。

四、修改一些配置

然后修改一下配置,点击扳手,将编码格式修改为UTF -8,防止中文乱码。如果查看别人写的代码,出现乱码了,还是要修改的。然后点击Ok。

然后选择调试器,这里我用的是STLINK,点击魔术棒——>Debug——>Use,如下:

然后点击Use后的settings,点击Flash Download,把Reset and Run勾上,勾上这一项之后,我们下载程序后立马复位并执行(我的这个芯片不行,需要复位一下),这样方便一些。 

五、用库函数进行写程序

1、首先加入一些库函数和头文件

创建一个文件,名称为Library,特此说一下,需要在Include Path内声明所有包含头文件的文件夹,把下文面的文件全部添加在里面。

库函数.c文件

库函数.h,也就是头文件

还必须添加配置文件conf.h和中断文件it.c和it.h,如下;

如果让conf.h文件有效,还需设置,如下:

USE_STDPERIPH_DRIVER 进行定义,如下:魔法棒——>C/C++——>Define,然后点击Ok。

2、编写库函数程序

点亮PC13口的LED灯。程序如下:

#include  "stm32f10x.h"                  // Device headerint main(void)
{GPIO_InitTypeDef GPIO_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;    //推挽输出GPIO_InitStruct.GPIO_Pin=GPIO_Pin_13 ;         //PC13口GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;   //50HZGPIO_Init(GPIOC,&GPIO_InitStruct);GPIO_SetBits(GPIOC,GPIO_Pin_13);              //设置为高电平,熄灭GPIO_ResetBits(GPIOC,GPIO_Pin_13);            //设置为低电平,点亮while(1) {}}

http://www.lryc.cn/news/453503.html

相关文章:

  • matlab入门学习(二)矩阵、字符串、基本语句、函数
  • PC端微信小程序如何调试?
  • 点击按钮提示气泡信息(Toast)
  • 【易社保-注册安全分析报告】
  • 155. 最小栈
  • 用Manim实现高尔顿板(Galton Board)
  • OpenCV视频I/O(7)视频采集类VideoCapture之初始化视频捕获设备或打开一个视频文件函数open()的使用
  • vue3+vite@4+ts+elementplus创建项目详解
  • Python 从入门到实战34(实例2:绘制蟒蛇)
  • Visual Studio C# 处理和修复 WinRiver II 测量项目 MMT 文件错误
  • JAVA实现大写金额转小写金额
  • 如何使用ssm实现基于SSM的宠物服务平台的设计与实现+vue
  • 【C++学习笔记 21】C++中的动态数组 vertor
  • MongoDB 快速入门+单机部署(附带脚本)
  • 组合数求法汇总
  • Python知识点:在Python编程中,如何使用Joblib进行并行计算
  • matlab-对比两张图片的CIElab分量的差值并形成直方图
  • (十七)、Mac 安装k8s
  • 信息学奥赛一本通 2087:【22CSPJ普及组】解密(decode) | 洛谷 P8814 [CSP-J 2022] 解密
  • 【重学 MySQL】四十八、DCL 中的 commit 和 rollback
  • Java面试八股之认证授权
  • RCE_绕过综合
  • 关于Generator,async 和 await的介绍
  • Redis数据库与GO(二):list,set
  • c++知识点总结
  • 无IDEA不Java:快速掌握Java集成开发环境
  • 9.30学习记录(补)
  • 移动应用中提升用户体验的因素
  • VS与VSCode的区别
  • 用Python和OpenCV实现人脸识别:构建智能识别系统