STM32固件库SYSTEM 文件夹介绍

来源:本站
导读:目前正在解读《STM32固件库SYSTEM 文件夹介绍》的相关信息,《STM32固件库SYSTEM 文件夹介绍》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《STM32固件库SYSTEM 文件夹介绍》的详细说明。
简介:SYSTEM 文件夹里面的代码,此文件夹里面的代码由 ALIENTEK 提供,包含了几乎每个实验都可能用到的延时函数,位带操作,串口打印代码等。SYSTEM 文件夹下包含了 delay、 sys、 usart 等三个文件夹。分别包含了 delay.c、 sys.c、usart.c 及其头文件 delay.h,sys.h,usart.h。

delay文件夹代码介绍

delay文件夹内包含了delay.c和delay.h两个文件,这两个文件用来实现系统的延时功能,其中包含3个函数:

voiddelay_init(u8SYSCLK);//该函数用来初始化2个重要参数:fac_us以及fac_ms;同时把SysTick的时钟源选择为外部时钟

voiddelay_ms(u16nms);//该函数用来延时指定的ms,其参数nms为要延时的微秒数

voiddelay_us(u32nus);//该函数用来延时指定的us,其参数nus为要延时的微秒数。

CM3内核的处理器,内部包含了一个SysTick定时器,SysTick是一个24位的倒计数定时器,当计到0时,将从RELOAD寄存器中自动重装载定时初值。只要不把它在SysTick控制及状态寄存器中的使能位清除,就永不停息。

下面我们开始介绍这几个函数。

sys文件夹代码介绍

sys文件夹内包含了sys.c和sys.h两个文件。在sys.h里面定义了STM32的IO口输入读取宏定义和输出宏定义。sys.c里面只定义了一个中断分组函数。

IO口的位操作实现

该部分代码在sys.h文件中,实现对STM32各个IO口的位操作,包括读入和输出。当然在这些函数调用之前,必须先进行IO口时钟的使能和IO口功能定义。此部分仅仅对IO口进行输入输出读取和控制。

//IO 口操作,只对单一的 IO 口!2.//确保 n 的值小于 16! 3.#define PAout(n) BIT_ADDR(GPIOA_ODR_Addr,n) //输出 4.#define PAin(n) BIT_ADDR(GPIOA_IDR_Addr,n) //输入 5.#define PBout(n) BIT_ADDR(GPIOB_ODR_Addr,n) //输出 6.#define PBin(n) BIT_ADDR(GPIOB_IDR_Addr,n) //输入 7.#define PCout(n) BIT_ADDR(GPIOC_ODR_Addr,n) //输出 8.#define PCin(n) BIT_ADDR(GPIOC_IDR_Addr,n) //输入 9.#define PDout(n) BIT_ADDR(GPIOD_ODR_Addr,n) //输出 10.#define PDin(n) BIT_ADDR(GPIOD_IDR_Addr,n) //输入11.#define PEout(n) BIT_ADDR(GPIOE_ODR_Addr,n) //输出 12.#define PEin(n) BIT_ADDR(GPIOE_IDR_Addr,n) //输入13.#define PFout(n) BIT_ADDR(GPIOF_ODR_Addr,n) //输出 14.#define PFin(n) BIT_ADDR(GPIOF_IDR_Addr,n) //输入15.#define PGout(n) BIT_ADDR(GPIOG_ODR_Addr,n) //输出 16.#define PGin(n) BIT_ADDR(GPIOG_IDR_Addr,n) 

有了上面的代码,我们就可以像51/AVR一样操作STM32的IO口了。比如,我要PORTA的第七个IO口输出1,则可以使用PAout(6)=1;即可实现。我要判断PORTA的第15个位是否等于1,则可以使用if(PAin(14)==1)…;就可以了。

这里顺便说一下,在sys.h中的还有个全局宏定义:

//0,不支持ucos

//1,支持ucos

#defineSYSTEM_SUPPORT_UCOS0//定义系统文件夹是否支持UCOS

SYSTEM_SUPPORT_UCOS,这个宏定义用来定义SYSTEM文件夹是否支持ucos,如果在ucos下面使用SYSTEM文件夹,那么设置这个值为1即可,否则设置为0(默认)。

usart文件夹介绍

usart文件夹内包含了usart.c和usart.h两个文件。这两个文件用于串口的初始化和中断接收。这里只是针对串口1,比如你要用串口2或者其他的串口,只要对代码稍作修改就可以了。usart.c里面包含了2个函数一个是voidUSART1_IRQHandler(void);另外一个是voiduart_init(u32bound);里面还有一段对串口printf的支持代码,如果去掉,则会导致printf无法使用,虽然软件编译不会报错,但是硬件上STM32是无法启动的,这段代码不要去修改。

printf函数支持printf函数向串口发送我们需要的内容,方便开发过程中查看代码执行情况以及一些变量值。

uart_init函数函数是串口1初始化函数。该函数有1个参数为波特率

voidUSART1_IRQHandler(void)函数是串口1的中断响应函数,当串口1发生了相应的中断后,就会跳到该函数执行。

提醒:《STM32固件库SYSTEM 文件夹介绍》最后刷新时间 2024-03-14 01:09:47,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《STM32固件库SYSTEM 文件夹介绍》该内容的真实性请自行鉴别。