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

STM32新建工程-基于库函数

一、创建一个新工程

我这里选择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.mrgr.cn/news/40877.html

相关文章:

  • 卫生间装修之前,一定要检查开发商做的防水,小心有坑
  • python 实现rayleigh quotient瑞利商算法
  • MySQL 8.0 为 Java 开发者提供的强大新特性:深度解析与实战演示
  • 数据结构-4.1.特殊矩阵的压缩存储
  • 【论文精度——长尾问题】Long-Tailed Learning as Multi-Objective Optimization
  • python 实现conjugate gradient共轭梯度算法
  • 达梦数据库开启归档模式
  • 【牛客网刷题记录】【java】二叉树
  • Pigar:Python 项目的依赖管理利器
  • windows 驱动实例分析系列-定时日志的COM驱动
  • 十一、磁盘的结构
  • 初识C语言(五)
  • leetcode69--x的平方根
  • 图文深入理解Oracle Network配置管理(一)
  • Qt 中的 QListWidget、QTreeWidget 和 QTableWidget:简化的数据展示控件
  • 计算机毕业设计 基于协同过滤算法的个性化音乐推荐系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • 基于 QAnything 的知识库问答系统:技术解析与应用实践
  • WebRTC Connection Negotiate解决
  • go+redis基于tcp实现聊天室
  • Redis实现每日签到(大数据量)