1-汇编编写的启动文件
startup_stm32f10x_hd.s:设置堆栈指针、设置PC指针、初始化中断向量表、配置系统时钟、对用C库函数_main最终去到C的世界
2-时钟配置文件
system_stm32f10x.c:把外部时钟HSE=8M,经过PLL倍频为72M。
3-外设相关的
stm32f10x.h:实现了内核之外的外设的寄存器映射
xxx:GPIO、USRAT、I2C、SPI、FSMC
stm32f10x_xx.c:外设的驱动函数库文件
stm32f10x_xx.h:存放外设的初始化结构体,外设初始化结构体成员的参数列表,外设固件库函数的声明
4-内核相关的
CMSIS - Cortex 微控制器软件接口标准
core_cm3.h:实现了内核里面外设的寄存器映射
core_cm3.c:内核外设的驱动固件库
NVIC(嵌套向量中断控制器)、SysTick(系统滴答定时器)
misc.h
misc.c
5-头文件的配置文件
stm32f10x_conf.h:头文件的头文件
//stm32f10x_usart.h
//stm32f10x_i2c.h
//stm32f10x_spi.h
//stm32f10x_adc.h
//stm32f10x_fsmc.h
…
6-专门存放中断服务函数的C文件
stm32f10x_it.c
stm32f10x_it.h
中断服务函数你可以随意放在其他的地方,并不是一定要放在stm32f10x_it.c
#include “stm32f10x.h” // 相当于51单片机中的 #include
int main(void)
{
// 来到这里的时候,系统的时钟已经被配置成72M。
}
关键字:STM32 固件库 文件含义
引用地址:
STM32固件库文件含义解析
推荐阅读最新更新时间:2024-11-17 11:18
STM32利用定时器1控制LED闪烁
配置LED灯 //PC13 void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOC, &GPIO_InitStructure); }
[单片机]
STM32——库函数开发小结
基本上所有外设都有以下几类寄存器:【CR/DR/SR】 (1)控制寄存器 xxx_CR(Control/Configuration Register):这类寄存器是用来配置、控制 相应 外 设 的 工 作 方 式 的 。 如 GPIOx_CRL、GPIOx_CRH, AFIO_EXTICR1~AFIO_EXTICR4,串口的 USART_CR1~USART_CR3等。 (2)数据寄存器 xxx_DR(Data Register):这类寄存器主要是存储了外设进行输出输入的数据。如 GPIOx_IDR、GPIOx_ODR、USART_DR 等。 (3)状态寄存器 xxx_SR(Status Register):这类寄存器主
[单片机]
【STM32】HAL库-备份寄存器(BKP)
简介 备份寄存器是42个16位的寄存器,可用来存储84个字节的用户应用程序数据。 他们处在备份域里,当VDD电源被切断,他们仍然由VBAT维持供电。 当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位。 使能对备份寄存器和RTC的访问 复位后,对备份寄存器和RTC的访问被禁止,并且备份域被保护以防止可能存在的意外的写操作。执行以下操作可以使能对备份寄存器和RTC的访问。 通过设置寄存器RCC_APB1ENR的PWREN和BKPEN位来打开电源和后备接口的时钟 电源控制寄存器(PWR_CR)的DBP位来使能对后备寄存器和RTC的访问。 使用电池或其他电源连接到VBAT脚上,当VDD断电时,可以保存
[单片机]
STM32之开发利器(USART)
// 支持printf函数, 不需要选择use MicroLIB #if 1 #pragma import(__use_no_semihosting) //标准库需要的支持函数 struct __FILE { int handle; }; FILE __stdout; //定义_sys_exit()以避免使用半主机模式 _sys_exit(int x) { x = x; } //重定义fputc函数 int fputc(int ch, FILE *f) { while((USART1- SR&0X40)==0);//循环发送,直到发送完毕 USAR
[单片机]
STM32位带操作的详解
1. 什么是位带操作以及STM32中位带操作的区域 什么是位带操作?简单来说就是通过宏定义封装一些操作,让你可以像51单片机上去操作IO口,从而不用麻烦的去配置各种寄存器,在STM32中有两个地方实现了位带。其中一个是 SRAM 区的最低 1MB 范围,第二个则是片内外设区的最低 1MB 范围。这两个区中的地址除了可以像普通的 RAM 一样使用外,它们还都有自己的“位带别名区”,位带别名区把每个比特膨胀成一个 32 位的字。当你通过位带别名区访问这些字时,就可以达到访问原始比特的目的。 下图就是STM32中可以用于位带操作的区域了,片上SRAM的0x2000 0000到0x2010 0000和片上外设的0x4000 0000到
[单片机]
STM32 简易按键KEY处理
一般的按键功能都需要做防抖处理,中间就涉及到了阻塞延迟,但是在实际项目开发中应当尽量避免不必的阻塞。可以使用计时功能去处理按键防抖,在系统滴答时钟中断中实现按键功能检测,按键功能处理是在main里实现。 #define KEY_NR 2 /* 短按 */ #define KV_KEY1 0x01 #define KV_KEY2 0x02 /* 长按 */ #define LKV_KEY1 0x10 #define LKV_KEY2 0x20 #define KV_NULLKEY 0x00 #define KEY_PRESS 0x01 #define KEY_NO_PRESS 0x00 #define KEYBU
[单片机]
技术文章—RS-485总线电平异常解决方案解析
摘要:各位工程师是否会遇到这样的情况,测试单个RS-485设备数据无异常,但设备组网后,就出现通讯数据异常或连接失败等情况。出错的原因是什么?本文将从门限电平为你揭秘RS-485组网异常。 RS-485总线是具有结构简单、通信距离远、通信速度高、成本低等优点,广泛应用于工业通讯、电力监控以及仪器仪表等行业。若总线上接有终端电阻,则在总线空闲状态时,RS-485总线AB差分电压可能处于门限电平(±200mV)之内,这时可能会导致通信出错,那么,出错的原因是什么?MCU接收到的数据会发生什么样的变化? 1、 数据出错的原因 如图 1所示为8位数据位无校验位的UART时序图,当使用UART进行通信时,MCU在检测到起始位后
[测试测量]
CAN总线波特率计算及设置方法(STM32,SJA1000,LPC2292)
SJA1000 内部频率基准源F_BASE = Fclk/2,即外部晶振频率Fclk的2分频。注意任何应用中,当利用外部晶振作为基准源的时候,都是先经过2分频整形的。 1.1 位周期的组成 波特率(fbit)是指单位时间内所传输的数据位的数量,一般取单位时间为1s。波特率由通信线上传输的一个数据位周期的长度(Tbit)决定,如下式所示。 Fbit=1/Tbit (1) 根据Philips公司的独立通信控制器,一个位周期由3个部分组成:同步段(tSYNC_SEG)、相位缓冲段1(tTSEG1)和相位缓冲段2(tTSEG2)。 Tbit=tSYNC_SEG+tTSEG1+tTSEG2 (2) 所有这些
[单片机]