《嵌入式系统原理与应用》 | 常用库函数

系列索引:《嵌入式系统原理与应用》 | 嵌入式系统 重点知识梳理


目录

 

GPIO常用库函数(引脚的选择、工作模式、速度的设置及引脚的置位、复位与数据的读取)

GPIO初始化过程及使用方式

 

定时器相关库函数的使用(arr,psc及ccr值的设置,定时器中断的使用)

 

中断相关库函数(中断通道、优先级分组的设置)

DMA的常用库函数(主要在初始化时结构体变量的设置)

 

ADC常用库函数(主要包括注入、规则通道的设置及转换数据的读取、中断的使用)

USART相关库函数(初始化结构体变量的设置、发送与接收数据、中断相关)

SPI的常用库函数(初始化设置、收发数据)

I2C常用库函数(初始化设置、起始与停止条件生成、收发数据集中断)


GPIO常用库函数(引脚的选择、工作模式、速度的设置及引脚的置位、复位与数据的读取)

所有GPIO引脚,使用前必须先打开其所属端口时钟

常用库函数

GPIO_Init:根据GPIO_InitStruct中指定的参数初始化GPIOx端口

GPIO_SetBits:将指定的GPIO端口的一个或多个指定引脚置位

GPIO_ResetBits: 将指定的GPIO端口的一个或多个指定引脚复位

GPIO_ReadOutputDataBit:读取指定GPIO端口的指定引脚的输出值(1 bit);

GPIO_ReadInputDataBit:读取指定GPIO端口的指定引脚的输入值(1 bit);

 

GPIO初始化过程及使用方式

初始化连接LED0的PA8引脚

——打开APB2总线上GPIOA端口的时钟

 

/* Enable GPIO_LED0 clock */

RCC_APB2PeriphClockCmd(

RCC_APB2Periph_GPIOA,

ENABLE);

初始化连接LED0的PA8引脚

——将PA8引脚设置为推挽输出模式

/* GPIO_LED0 Pin(PA8) Configuration */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);

开启或关闭LED灯

LED_On(void){

    GPIO_ResetBits(GPIOA,GPIO_Pin_8)

}

 

LED_Off(void){

    GPIO_SetBits(GPIOA,GPIO_Pin_8)

}

初始化连接按键KEY0的PC5引脚

——打开APB2总线上GPIOC端口的时钟

 

/* Enable GPIO_KEY0 clock */

RCC_APB2PeriphClockCmd(

RCC_APB2Periph_GPIOC,

ENABLE);

初始化连接按键KEY0的PC5引脚

——将PC5引脚设置为输入上拉模式

/* GPIO_KEY0 Pin(PC5) Configuration */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;

GPIO_Init(GPIOC, &GPIO_InitStructure);

检测按键输入key0

Unsigned int Key0_Read(void){

    if(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5))

          return 1;

    else

          return 0;

}

 GPIO设置-void key_Init_Row(void)

GPIO_InitTypeDef GPIO_InitStructure;        

RCC_APB2PeriphClockCmd(KEY_ROW_GPIO_CLK,ENABLE);//使能时钟

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//通用推挽输出

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Pin=KEY_ROW_GPIO_PIN1|KEY_ROW_GPIO_PIN2|KEY_ROW_GPIO_PIN3|KEY_ROW_GPIO_PIN4;  

GPIO_Init(KEY_ROW_GPIO_PORT,&GPIO_InitStructure);

 

#define KEY_ROW_GPIO_CLK  RCC_APB2Periph_GPIOE

#define KEY_ROW_GPIO_PORT           GPIOE

 GPIO设置

RCC_APB2PeriphClockCmd(KEY_LIST_GPIO_CLK,ENABLE);//使能时钟

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;      //下拉输入

GPIO_InitStructure.GPIO_Pin=KEY_LIST_GPIO_PIN1|KEY_LIST_GPIO_PIN2|KEY_LIST_GPIO_PIN3|KEY_LIST_GPIO_PIN4;

GPIO_Init(KEY_LIST_GPIO_PORT,&GPIO_InitStructure);        

GPIO_SetBits(KEY_ROW_GPIO_PORT,KEY_ROW_GPIO_PIN1|KEY_ROW_GPIO_PIN2|KEY_ROW_GPIO_PIN3|KEY_ROW_GPIO_PIN4);   //将引脚置为高电平

 

#define KEY_LIST_GPIO_CLK    RCC_APB2Periph_GPIOF

#define KEY_LIST_GPIO_PORT                                        GPIOF

 按键扫描

if(GPIO_ReadInputDataBit(KEY_LIST_GPIO_PORT,KEY_LIST_GPIO_PIN1)==1)

{

   SysTick_Delay_ms(10);            //软件“消抖”

                                                                       if(GPIO_ReadInputDataBit(KEY_LIST_GPIO_PORT,KEY_LIST_GPIO_PIN1)==1)

{

      key_Init_List();

if(GPIO_ReadInputDataBit(KEY_ROW_GPIO_PORT,KEY_ROW_GPIO_PIN1)==1)

return 1;

else if(GPIO_ReadInputDataBit(KEY_ROW_GPIO_PORT,KEY_ROW_GPIO_PIN2)==1)

return 4;

else if(GPIO_ReadInputDataBit(KEY_ROW_GPIO_PORT,KEY_ROW_GPIO_PIN3)==1)

return 7;

else if(GPIO_ReadInputDataBit(KEY_ROW_GPIO_PORT,KEY_ROW_GPIO_PIN4)==1)

return '*';

}

}

 

定时器相关库函数的使用(arr,psc及ccr值的设置,定时器中断的使用)

TIM_TimeBaseInit:根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx。

TIM_OC1Init:根据TIM_OCInitStruct中指定的参数初始化外设 TIMx的通道1。

TIM_OC2Init:根据TIM_OCInitStruct中指定的参数初始化外设 TIMx的通道2。

TIM_OC3Init:根据TIM_OCInitStruct中指定的参数初始化外设 TIMx的通道3。

TIM_OC4Init:根据TIM_OCInitStruct中指定的参数初始化外设 TIMx的通道4。

TIM_OC1PreloadConfig:使能或者禁止TIMx在CCR1上的预装载寄存器。

TIM_OC2PreloadConfig:使能或者禁止TIMx在CCR2上的预装载寄存器。

TIM_OC3PreloadConfig:使能或者禁止TIMx在CCR3上的预装载寄存器。

TIM_OC4PreloadConfig:使能或者禁止TIMx在CCR4上的预装载寄存器。

TIM_ARRPreloadConfig:使能或者禁止TIMx在ARR上的预装载寄存器。

TIM_CtrlPWMOutputs:使能或禁止TIMx的主输出。

TIM_Cmd:使能或者禁止TIMx。

初始化输入捕获通道。调用函数:TIM_ICInit();

TIM_GetFlagStatus:检查指定的TIMx标志位的状态。

TIM_ClearFlag:清除 TIMx 的待处理标志位。

TIM_ITConfig:使能或者禁止指定的TIMx中断。

TIM_GetITStatus:检查指定的TIMx中断是否发生。

TIM_ClearITPendingBit:清除TIMx的中断挂起位。

 

 

中断相关库函数(中断通道、优先级分组的设置)

NVIC_DeInit:将NVIC的寄存器恢复为复位启动时的默认值。

NVIC_PriorityGroupConfig:设置优先级分组。

NVIC_Init:根据NVIC_InitStruct中指定的参数初始化NVIC。

设置中断优先级

 /* Configure one bit for preemption priority */

  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//设置中断优先级组

  /* Enable the TIM2_IRQn Interrupt */

  NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; //设置TIM2_IRQn中断通道

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;  // 指定抢占式优先级别,可取0-7

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  //子优先级为0

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  //IRQ通道使能

  NVIC_Init(&NVIC_InitStructure);  //根据指定的参数初始化VIC寄存器

编写对应的中断服务程序

 

 

DMA的常用库函数(主要在初始化时结构体变量的设置)

DMA_DeInit:将DMAy的通道x的寄存器恢复为复位启动时的默认值。

DMA_Init:根据DMA_InitStruct中指定的参数初始化指定DMA通道的寄存器。

DMA_GetCurrDataCounter:返回当前指定DMA通道剩余的待传输数据数目。

DMA_Cmd:使能或者禁止指定的DMA通道。

DMA_GetFlagStatus:查询指定的DMA通道的标志位状态。

DMA_ClearFlag:清除指定的DMA通道的待处理标志位。

DMA_ITConfig:使能或禁止指定的DMA通道中断。

DMA_GetITStatus:查询指定DMAy的通道x的中断的状态。

DMA_ClearITPendingBit:清除DMAy的通道x的中断挂起位。

 

ADC常用库函数(主要包括注入、规则通道的设置及转换数据的读取、中断的使用)

ADC开始转换、结束转换和结果读取

 

 

 

 

USART相关库函数(初始化结构体变量的设置、发送与接收数据、中断相关)

USART_DeInit:将USARTx的寄存器恢复为复位启动时的默认值。

USART_Init:根据USART_InitStruct中指定的参数初始化指定USART的寄存器。

USART_Cmd:使能或禁止指定USART。

USART_SendData:通过USART发送单个数据。

USART_ReceiveData:返回指定USART最近接收到的数据。

USART_GetFlagStatus:查询指定USART的标志位状态。

USART_ClearFlag:清除指定USART的标志位。

USART_ITConfig:使能或禁止指定的USART中断。

USART_GetITStatus:查询指定的USART中断是否发生。

USART_ClearITPendingBit:清除指定的USART中断挂起位。

 

 

SPI的常用库函数(初始化设置、收发数据)

SPI_I2S_DeInit:将SPIx的寄存器恢复为复位启动时的默认值。

SPI_Init:根据SPI_InitStruct中指定的参数初始化指定SPI的寄存器。

SPI_Cmd:使能或禁止指定SPI。

SPI_I2S_SendData:通过SPI/I2S发送单个数据。

SPI_I2S_ReceiveData:返回指定SPI/I2S最近接收到的数据。

SPI_I2S_GetFlagStatus:查询指定SPI/I2S的标志位状态。

SPI_I2S_ClearFlag:清除指定SPI/I2S的标志位(SPI_FLAG_CRCERR)。

SPI_I2S_ITConfig:使能或禁止指定的SPI/I2S中断。

SPI_I2S_GetITStatus:查询指定的SPI/I2S中断是否发生。

SPI_I2S_ClearITPendingBit:清除指定的SPI/I2S中断挂起位(SPI_IT_CRCERR)。

 

I2C常用库函数(初始化设置、起始与停止条件生成、收发数据集中断)

I2C_DeInit:将I2Cx的寄存器恢复为复位启动时的默认值。

I2C_Init:根据I2C_InitStruct中指定的参数初始化指定I2C的寄存器。

I2C_Cmd:使能或禁止指定I2C。

I2C_GenerateSTART:产生I2Cx传输的起始信号。

I2C_Send7bitAddress:发送地址信息来选中指定的I2C从设备。

I2C_SendData:通过I2C发送单字节数据。

I2C_ReceiveData:返回指定I2C最近接收到的字节数据。

I2C_CheckEvent:查询I2Cx最近一次发生的事件是否是I2C_EVENT指定的事件。

I2C_AcknowledgeConfig:使能或者禁止指定I2C的应答功能。

I2C_GenerateSTOP:产生I2Cx传输的结束信号。

I2C_GetFlagStatus:查询指定I2C的标志位状态。

I2C_ClearFlag:清除指定I2C的标志位。

I2C_ITConfig:使能或禁止指定的I2C中断。

I2C_GetITStatus:查询指定的I2C中断是否发生。

I2C_ClearITPendingBit:清除指定的I2C中断请求挂起位。

I2C_DMACmd:使能或禁止指定I2C的DMA请求。

发布了112 篇原创文章 · 获赞 975 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/qq_41523096/article/details/103812282