STM32固件库目录结构如下图所示:
我们主要关注的是 Libraries这个文件夹。
1、_htmresc 是ST图标,Project是一些列子和模板可以参考学习,Utilities是ST官方评估板的例程。
2、Libraries 中 CMSIS(Cortex Microcontroller Software Interface Standand)为Cortex微控制器软件接口标准。
CoreSupport 中包含内核文件 core_cm3.h, core_cm3.c 用于访问CortexM3内核
设备驱动文件 stm32f10x.h, system_stm32f10x.h, system_stm32f10x.c 用于访问
CortexM3外设的核心文件,每个外设还有单独的库文件,在
STM32F10x_StdPeriph_Driver 下。
stm32f10x.h 包含STM32F10x全系列所有外设寄存器的定义(寄存器基地址和
布局,位定义,中断向量表,存储空间地址映射等)
system_stm32f10x.h, system_stm32f10x.c 包含用于初始化微控制器的函数
SystemInin,用来配置外部存储器控制器函数Sysem_ExtMemCtl。
STM32F10x_StdPeriph_Driver 下为各种外设的头文件和c源文件
还有几个文件 stm32f10x_conf.h 是固件库配置文件,不需要使用的外设可以将其头文件注释掉,相应的库文
件就不会被编译进来,可以减少目标文件大小。
stm32f10x_it.h stm32f10x_.c是外设中断函数所在文件。
关键字:STM32 官方固件库
引用地址:
STM32官方固件库简析
推荐阅读最新更新时间:2024-03-16 14:50
UCOSIII简介于移植
UCOSIII简介 UCOSIII是一个可裁剪,可固化,可剥夺的多任务系统。相比于前代产品其最大任务数目没有限制,优先级相同的任务数目没有限制且有无需调度的的发送机制。 UCOSIII文件 在移植UCOSIII之前我们需要准备两样东西:一个是UCOSIII的源码,一个是Micrium官方在STM32F1xx上移植好的工程文件。 在Micrium文件夹中有四个文件夹 1、EvaBoards文件夹 这个文件夹里面就是关于STM32F107的工程文件。其中的处app.c和stm32f10x_conf.h外的文件的八个文件使我们需要添加到工程文件当中的。 2、uC-CPU文件夹 这个文件夹里面是与CPU相关的代码,有下面几个文
[单片机]
再造STM32---第十七部分:USART—串口通讯
本章参考资料:《STM32F4xx 中文参考手册》 USART 章节。 学习本章时,配合《STM32F4xx 中文参考手册》 USART 章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。 特别说明, 本书内容是以 STM32F42xxx 系列控制器资源讲解。 17.1 串口通讯协议简介: 物理层: 规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。其实就是硬 件部分。 协议层: 协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。其实就是软件部分。 1-RS232标准: RS232标准串口通讯结构图: 1、 RS232标准串口主要用于工业设备直接通信 2、电平转换芯片一般有M
[单片机]
stm32常用printf函数支持接口(标准库与hal库)
stm32常用printf函数支持接口(标准库与hal库) /hal库***************/ int fputc(int ch,FILE *f) { HAL_UART_Transmit(&huart1,(uint8_t *)&ch,1,0xFFFF);//hurat1为串口号,根据自己情况进行选择 return ch; } /标准库*******/ int fputc(int ch, FILE *f) { USART_SendData(USART1, (u8) ch); while(!(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == SET))
[单片机]
STM32低功耗状态的引脚配置
在STM32进入低功耗状态时,如果闲置||或者是其他的IO没有配置好。也将会增加不必要的功耗;所以在做低功耗设计的时候需要将闲置(保证系统稳定,其他的引脚据情况而定)全部设置为模拟输入配置。具体如下图所示,由此可以实现IO零消耗。
[单片机]
STM32之按键操作
这次分享的是一个独立按键控制LED灯亮灭的程序。 具体功能如下: KEY1-----LED1 KEY2-----LED2 KEY3-----LED3 KEY4-----(通过按下的次数分别控制LED1,LED2,LED3) 首先出于个人习惯,将按键和LED全部使用宏定义来操作,这样可以减少繁琐的函数输入 具体实现如下: #define KEY1 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5)//读取按键KEY1的值,赋值给KEY1 #define KEY2 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_1)//读取按键KEY2的值,赋值给KEY2 #define KEY3
[单片机]
STM32IO口8位操作移位的方式
当我们采用并口传输数据的时候都会用如下的方法进行数据传输 #define DATAOUT(x) GPIOB- ODR=x; STM32IO口都是16位的,所以当调用DATAOUT的时候就直接对GPIOB的16个IO口总体进行操作。但是我们如果只是选择高8位或者低8位的时候就需要进行移位操作,到底该怎么移位呢现在我们来看如下代码。 如果我们选择的是0-7位IO口那么传输数据的时候代码如下 void LCD_DrawPoint_16Bit(u16 color) { #if LCD_USE8BIT_MODEL==1 LCD_CS_CLR; LCD_RD_SET; LCD_RS_SET;//дµØÖ· DATAOUT(color 8
[单片机]
STM32实现低功耗待机总结(电流低至5.7uA)
刚开始进入STOPMode后,整机功耗有 300uA的,此时外围其他硬件电路电流已经可以肯定漏电流在nA级,因此调试方向在主芯片,经过实际测试,都是GPIO配置的问题,比如某个GPIO为中断输入,闲置为低电平,而我们配置成了IPU,因此内部的40K上拉就会在这里消耗3/40k =75uA,另外将N.C的GPIO配置成Floating Input,也会有一些漏电流,实际测试漏电流不大;另外将STM32F05x直接PIINtoPIN替代STM32100,所以Pin35,36的 PF6,PF7为之前的VCC,GND,因此要相应的配置为IPU,IPD,才不会有拉电流/灌电流;外部不使用晶振,因此必须将其配置为IPU/IPD 或者输出Low,
[单片机]
如何使用STM32实现systick的精确延时
SYSTICK寄存器初始化 void SysTick_Configuration(void) { if (SysTick_Config(SystemCoreClock / 100)) { while (1); } NVIC_SetPriority(SysTick_IRQn, 0x0); } SysTick_Config默认时钟为SysTick_CLKSource_HCLK,所以在这之前使用SysTick_CLKSourceConfig()选择系统时钟不会改变systick的时钟 static __INLINE uint32_t SysTick_Config(uint32_t ticks) { if (ticks 》 Sys
[单片机]