首页 > 其他分享 >STM32F103C8T6学习笔记1--新建工程模板

STM32F103C8T6学习笔记1--新建工程模板

时间:2024-10-31 18:48:53浏览次数:7  
标签:V3.5 工程 -- STM32F10x 文件夹 STM32F103C8T6 StdPeriph GPIO 模板

1、简介

STM32是一系列由STMicroelectronics(瑞士意法半导体)公司设计和生产的32位微控制器产品线。这些微控制器基于ARM Cortex-M内核,并具有高性能、低功耗和多种外设接口的特点。STM32处理器被广泛应用于各种嵌入式系统领域,包括工业控制、消费电子、汽车电子、物联网等。

STM32处理器系列有多个型号,包括STM32F0、STM32F1、STM32F2、STM32F3、STM32F4、STM32F7、STM32L0、STM32L1、STM32L4等。不同型号的STM32处理器具有不同的性能和功能特点,以适应不同应用场景的需求。

STM32处理器采用了丰富的外设接口,包括多个通用输入输出(GPIO)引脚、通用定时器(TIM)、通用串行总线(USART、SPI、I2C)、模拟到数值转换器(ADC)等。这些外设接口可以连接到各种外部设备,从而实现不同应用的功能要求。

此外,STM32处理器还提供了丰富的开发工具和软件支持,包括集成开发环境(IDE)、编译器、调试器等。开发者可以使用这些工具进行应用程序的开发、调试和部署。

总的来说,STM32处理器是一种功能强大、灵活性高的32位微控制器,适用于各种嵌入式系统应用。它具有低功耗、高性能和丰富的外设接口,以及完善的开发工具和软件支持。

2、新建工程模板

(1)库函数开发方式

由于STM32F103C8T6芯片的寄存器众多,名字难记,因此不再适合寄存器方式开发,而采用固件库的形式开发,就是底层对寄存器的操作通过函数封装,我们只需要记住函数的功能即可,当然对于初学者,函数名字也不是太好记,不过用的多了,自然就记住了。

我们先建立一个工程模板,将固件库资料拷贝到工程模板里。

(2)Keil5新建工程

选择器件

这个新建工程小助手页面直接叉掉即可。

工程就新建好了。

(3)相关固件库文件拷贝到工程目录下Start文件夹

a、在工程模板目录里面新建一个文件夹start,存放STM32的启动文件。将\工程模版\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm下面所有的文件都复制到Start里面

b、将\工程模版\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x下面的stm32f10x.h(内核外围设备的寄存器地址头文件)、system_stm32f10x.c、system_stm32f10x.h(系统时钟配置文件)这三个文件也复制到Start里面

c、将工程模版\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport里面的内核的寄存器描述及配置文件也复制到Start文件夹里面。

(4)keil MDK工程资源管理器

将Target1下面的SourceGroup1改名为Start,添加前面的文件到该Start下。

添加下面6个文件到Start下。注意启动文件startup开头的文件的名字后缀不要选错,启动文件只能有一个。

将头文件路径添加MDK工程配置里面,点击魔术棒。

(4)User文件夹放置main函数

按照在工程目录建Start的方式,建User。

(5)编译工程

在main函数里面插入头文件"stm32f10x.h"  

3、通过操作寄存器来点亮LED

以上模版只是添加了内核启动文件,时钟、内核头文件,尚未添加固件库,可以通过操作寄存器来进行开发。

(1)配置STlink下载方式,就是将asf(AXF文件是一种ARM交叉编译器生成的可执行文件格式,用于嵌入式系统开发。它包含了可执行程序的机器指令、数据以及其他相关的调试信息。AXF文件可以被加载到ARM处理器上运行。在ARM开发中,AXF文件通常会通过调试工具进行调试和分析。)加载到芯片内在线调试。也可以同时生成hex二进制文件。

(2)点亮LED灯的代码(PC13输出低电平点亮)

#include "stm32f10x.h"                  // Device header


int main()
{
	RCC->APB2ENR=0x00000010;//打开GPIOC的时钟
	GPIOC->CRH=0x00300000;   //配置GPIOC13的输出模式为推挽输出50MHz
	GPIOC->ODR=0x00000000;  //点亮PC13灯
	while(1)
		{
			
		}
}

(3)仿真图现象

4、添加库函数

(1)Library文件夹

新建Library文件夹存放库函数文件。

将\工程模版\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\

Libraries\STM32F10x_StdPeriph_Driver\src下面所有的C文件复制到Library文件夹

将\工程模版\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\

Libraries\STM32F10x_StdPeriph_Driver\inc下面所有的H文件复制到Library文件夹

(2)添加Library文件夹到工程目录

(3)将配置文件、中断文件复制到User文件夹

将工程模版\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Project\

STM32F10x_StdPeriph_Template里面的配置文件、中断文件复制到User文件夹内,并在keil里面添加到工程中。

将stm32f10x.h里面的USE_STDPERIPH_DRIVER,放到工程配置选项里。

5、操作库函数熄灭LED

#include "stm32f10x.h"                  // Device header


int main()
{
	GPIO_InitTypeDef GPIO_InitStructure;
	
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	
	GPIO_Init(GPIOC,&GPIO_InitStructure);
	
	GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET);
	while(1)
		{
			
		}
}

6、建立System文件夹存放用户自定义函数

(1)将延时函数复制到System文件夹

(2)将System文件夹包含到工程文件中

(3)添加文件到工程文件管理器

(4)编写LED(PC13)灯闪烁代码

#include "stm32f10x.h"                  // Device header
#include "delay.h"  

int main()
{
	GPIO_InitTypeDef GPIO_InitStructure;
	
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	
	GPIO_Init(GPIOC,&GPIO_InitStructure);
	delay_init();

	while(1)
		{

			GPIO_WriteBit(GPIOC,GPIO_Pin_13,(BitAction)0);
			delay_ms(50);
			GPIO_WriteBit(GPIOC,GPIO_Pin_13,(BitAction)1);
			delay_ms(50);
		}
}

在Proteus仿真图或者硬件上测试即可。

最后可以删除工程模板里面的固件库文件夹,以后每次新建工程不需要再做了,只要复制这个文件夹即可。

 

标签:V3.5,工程,--,STM32F10x,文件夹,STM32F103C8T6,StdPeriph,GPIO,模板
From: https://blog.csdn.net/u010152658/article/details/143380951

相关文章

  • 网络建设与运维配置部分答案
    SW3针对每个业务VLAN的第一个接口配置Loopback命令,模拟接口 UP,方便后续业务验证与测试SW3(config)#inte1/0/5SW3(config-if-ethernet1/0/5)#loopbackSW1、SW2、SW3启用MSTP,实现网络二层负载均衡和冗余备份,创建实例Instance10和Instance20,名称为SKILLS,修订版......
  • 5
    程序员的自我修养读后感:这本书对编程实践有着深远的指导价值。在日常编程中,我们常常会遇到一些奇怪的问题,比如程序在不同环境下的运行差异,或者是看似正确的代码却出现莫名其妙的错误。这些问题很多时候都与程序的底层运行机制相关。例如,当我们遇到动态链接库相关的问题时,如程序......
  • (一)VB 2010 开发环境
    VB2010开发环境使用VB2010.VB2010界面如图所示起始页:访问项目,团队项目,MSDN帮助资源(MSDN(MicrosoftDeveloperNetwork)帮助资源是微软公司为开发者提供的一个综合性资源平台)新建项目:选择VB“Windows窗体应用程序”,“确定”后新建如图Windows窗体应用项目窗口窗体有设计......
  • 大数据都有哪些技术?
    大数据技术涵盖了数据的采集、存储、处理、分析和可视化等多个方面,旨在解决海量数据带来的挑战。以下是大数据技术的主要组成部分及其相关技术:1.数据采集数据采集是大数据处理的第一步,涉及到从各种来源获取数据。技术日志采集工具:如Fluentd、Logstash、Filebeat等,用......
  • 十月第二篇
    技术与实践代码质量可读性与可维护性:编写清晰、易懂的代码是基本要求。实践建议:参与代码审查,学习如何给出和接受反馈。定期重构代码,消除技术债务。重构和测试重构:提高代码质量和可读性。测试驱动开发(TDD):在编写功能之前先编写测试。实践建议:选择一个小项目,应用TDD,从测试......
  • mysql CA certificate ca.pem is self signed 如何解决
    当MySQL的CA证书(ca.pem)是自签名时,这意味着该证书不是由受信任的证书颁发机构(CA)签发的。这可能导致在客户端和服务器之间建立安全连接时出现问题,特别是在需要验证证书链的情况下。以下是一些解决方法和步骤,可以帮助你处理自签名的CA证书:1.将CA证书添加到受信任的证......
  • python selenium 操作唯品会
    fromseleniumimportwebdriverimporttimefromselenium.webdriver.chrome.serviceimportServicefromselenium.webdriver.common.byimportByservice=Service(executable_path="D:\\chromedriver.exe")chrome_options=webdriver.ChromeOptions()......
  • pip install open3d 失败
    pip安装open3d失败#pipinstallopen3dLookinginindexes:https://pypi.tuna.tsinghua.edu.cn/simpleERROR:Couldnotfindaversionthatsatisfiestherequirementopen3d(fromversions:none)ERROR:Nomatchingdistributionfoundforopen3d 解决:包名已......
  • 【小白学机器学习26】 极大似然估计,K2检验,logit逻辑回归(对数回归)(未完成----)
    目录1先从一个例题出来,预期值和现实值的差异怎么评价?1.1这样一个问题1.2我们的一般分析1.3用到的关键点11.4但是差距多远,算是远呢?2极大似然估计2.1极大似然估计的目的2.1.1 极大似然估计要解决什么问题?2.1.2 极大似然估计的原则:2.2什么是极大似然估计?2.2......
  • 信息搜集——原始
    !!!在渗透测试过程中,信息收集是非常重要的一个环节,此环节的信息将影响到后续成功几率,掌握信息的多少将决定发现漏洞的机会的大小,换言之决定着是否能完成目标的测试任务。!!!一.路径(可以通过根据已知的域名反查,分析出此域名的注册人、公司地址、电话、邮箱、姓名等)1.1:子域名【子域名可......