1,系统函数
HAL_Delay
原型:void HAL_Delay(uint32_t Delay);
作用:利用滴答定时器生成的系统延迟函数
参数:
Delay:延迟时间,单位是ms
返回值:无
示例代码:
HAL_Delay(50);//延迟50ms
2,GPIO函数
HAL_GPIO_WritePin
原型:void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
作用:使得某一个GPIO的Pin的状态变成高电平或者低电平
参数:
GPIOx:引脚选择
GPIO_Pin:引脚编号选择
PinState:引脚状态设置
返回值:无
示例代码:
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_SET);//设置PB15引脚为高电平HAL_Delay(500);//延时500msHAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_RESET);//设置PB15引脚为低电平HAL_Delay(500);//延时500ms
HAL_GPIO_TogglePin
原型:void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
作用:使得某一个GPIO的Pin的状态翻转
参数:
GPIOx:引脚选择
GPIO_Pin:引脚编号选择
返回值:无
示例代码:
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_15);//设置PB15引脚翻转,如果原先是低电平,现在就是高电平;如果原先是高电平,现在就是低电平。
HAL_GPIO_ReadPin
原型:GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
作用:读取某一个GPIO的Pin的状态翻转
参数:
GPIOx:引脚选择
GPIO_Pin:引脚编号选择
返回值:某一个GPIO的Pin的状态。
GPIO_PIN_SET:当前状态为高电平
GPIO_PIN_RESET:当前状态为低电平
示例代码:
if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_15)==GPIO_PIN_RESET)//判断PB15为低电平 HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,GPIO_PIN_SET);//设置PB14引脚为高电平
3,UART函数
printf重定向
原型:int fputc(int c,FILE *stream);
作用:printf重定向
参数:系统参数,无需关心
返回值:系统参数,无需关心
示例代码:
int fputc(int c,FILE *stream)//需要引用头文件:stdio.h{ HAL_UART_Transmit(&huart1,(uint8_t *)&c,1,100);//注意,这里重定向是串口1 return c;}
HAL_UART_Transmit
原型:HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart,uint8_t *pData,uint16_t Size,uint32_t Timeout);
作用:串口以阻塞式发送数据
参数:
huart:串口号选择
pData:发送的数据
Size:发送数据的长度
Timeout:超时时间,代表执行函数时,最多占用串口的时间,单位是毫秒
返回值:无
示例代码:
unsigned char str[]={"hello world"};//需要发送的数据
HAL_UART_Transmit(&huart1,str,sizeof(str),100);//串口1在100ms以内发送数据
HAL_UART_Receive_IT
原型:HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart,uint8_t *pData,uint16_t Size);
作用:串口以中断方式接收数据
参数:
huart:串口号选择
pData:发送的数据
Size:发送数据的长度
返回值:无
示例代码:
unsigned char str[1];//接收数据存放位置HAL_UART_Receive_IT(&huart1,str,1);//串口接收数据 //串口接收完成的中断回调函数void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){ if(str[0]==0x80)//判断接收的数据是否为0x80 HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin);//翻转PB5电平}
HAL_UART_RxCpltCallback
原型:__weak void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);
作用:串口接收完成的中断回调函数
参数:系统参数,无需关心
返回值:无
示例代码:
unsigned char str[1];//接收数据存放位置HAL_UART_Receive_IT(&huart1,str,1);//串口接收一个数据 //串口接收完成的中断回调函数void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){ if(str[0]==0x80)//判断接收的数据是否为0x80 HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin);//翻转PB5电平}
3,IIC函数
HAL_I2C_Master_Transmit
原型:HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout);
作用:IIC以主机模式发送数据
参数:
hi2c:IIC编号
DevAddress:写入的地址
pData:写入的数据
Size:写入数据的字节数
Timeout 最大传输时间,超过传输时间将自动退出传输函数
返回值:无
示例代码:
uint16_t Address=0x1234;
uint8_t TxData[2]={0x11,0x22};//在100ms以内,使用IIC1,采用主机模式,向地址0x1234写入数据0x11和0x22
HAL_I2C_Master_Transmit(&hi2c1,I2C1_WRITE_ADDRESS,(uint8_t*)TxData,2,100);
4,SPI函数
HAL_SPI_TransmitReceive
原型:HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout);
作用:SPI以阻塞模式发送数据并接收返回值
参数:
hspi:SPI编号
pTxData:写入的数据
pRxData:读取的数据
Size:写入数据的字节数
Timeout:最大传输时间,超过传输时间将自动退出函数
返回值:无
示例代码:
uint8_t TxData[2]={0x11,0x22};
uint8_t RxData[2];//在100ms以内,使用SPI1,写入0x11和0x22,并等待接收的返回值
HAL_SPI_TransmitReceive(&spi1,(uint8_t*)TxData,(uint8_t*)TxData,2,100);
==========
往期回顾:
小白都看得懂的STM32的DMA知识
STM32CubeMX的外部中断的使用
ADC的低功耗和阻抗问题
外部中断为什么会误触发?
利用STM32CubeMX解读时钟树
==========