库函数的使用
学了一周多的STM32,从最开始的点亮一盏灯到中断定时的使用,发现对于ST库使用的一些使用方法,现作一小结:
1、初始化结构体
a、定义一个xxx—InitTypeDef 类型的结构体,比如GPIO—InitTypeDef类型的GPIO—InitStructure用来配置GPIO;
b、根据所使用的要求向这些结构体的成员中写入特定的控制参数,如GPIO_initStructure.GPIO_Pin=GPIO_Pin_13;
c、将结构体作为输入参数调用相应的外设库函数xxx—Init(),实现向寄存器写入控制参数;
2、数据的输入与输出
a、先通过输入参数向函数制定要使用的外设是什么,比如用(GPIOA,GPIO—Pin—5),选中PA5引脚进行控制;
b、进行写或者读数据操作,例如函数GPIO_WriteBit(GPIOA, u16 GPIO_Pin—5, Bit_RESE) ,是对PA5进行写1操作;
c、如果是接收外部数据,则调用Read或Receive函数,读取函数返回值来得到外部输入数据。
3、状态位、标志位
在程序运行的过程中当我们需要知道一些外设的工作状态的时候,那么就会涉及一系列的标志检查函数:
a、名为 PPP_GetFlagStatus的函数,其功能为检查外设 PPP某标志位被设置与否,例如:TIM_ GetFlagStatus ;
b、名为 PPP_ClearFlag 的函数,其功能为清除外设 PPP标志位,例如:TIM_ ClearFlag ;
c、名为 PPP_GetITStatus 的函数,其功能为判断来自外设 PPP的中断发生与否,例如:TIM_ GetITStatus ;
d、名为 PPP_ClearITPendingBit 的函数,其功能为清除外设 PPP 中断待处理标志位,例如:TIM_ ClearITPendingBit 。
总结:
ST官方库有许多共同特点,在此对外设主要的共同函数进行一个简单的分类总结:
函数名 | 功能 | 输入参数 | 返回值 |
XXX—Init() | 对外设进行初始化 |
XXX—inirTypeDef类型结构体 |
void |
XXX—DeInit() |
以系统默认形式初始化外设 | 将要进行初始化的外设名 | void |
XXX—StructInit() |
以默认的数据填充初始化结构体 | 将要进行默认填充的XXX—InitTypeDef类型结构体 | void |
XXX—SendData() |
使用外设发送数据 |
XXX相应的外设名;将要发送的数据 |
void |
XXX—ReceiveData() |
获取外设接收到的数据 |
XXX相应的外设名 |
返回接收到的数据 |
XXX_ GetFlagStatus () |
检测外设事件标志位 | 要检查的时间标志名 | SET或RESET |
XXX_ GetITStatus () |
检查中断标志 | 要检查的中断标志名 | SET或RESET |
XXX_ ClearFlag () |
清除事件标志位 | 要清除的事件标志名 | void |
XXX_ ClearITPendingBit () |
清除挂起的中断标志位 | 要检测的中断标志名 | void |
XXX_ITConfig () |
设置外设的中断 | XXX相应得外设;选择开启外设的某中断 | void |
XXX_Cmd () |
使能或失能外设 | 配置外设名;ENABLE或DISABLE | void |
XXX_ DMACmd () |
配置外是否可使用DMA请求 | 配置外设名;选择要配置的DMA请求;ENABLE或DISABLE | void |