STM32 HAL库 常用函数、代码整理
IO口的相关函数
HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
读取GPIO口状态,高电平返回1,低电平返回0例
HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_6)
HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
设置GPIO电平HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
反转GPIO电平
串口相关函数
HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
串口发送函数传入参数分别为 串口地址 数据指针 数据大小 超时时间
数据中加“\r\n” 串口换行 注意保证波特率一致,否则为乱码
可使用sizeof(*pData)
函数获取数据大小HAL_UART_Receive_IT(&huart1, (uint8_t*)recv_buf, 13)
串口接收使能串口中断常见的定义方式
1
2
3
4
5
6
7
8
9
10
11
12void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
/* 判断是哪个串口触发的中断 */
if(huart ->Instance == USART1)
{
/*要执行的操作*/
//重新使能串口接收中断
HAL_UART_Receive_IT(huart, (uint8_t*)recv_buf, 13);
}
}
定时器相关函数
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1)
配置定时器后启动PWMHAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_1)
停止输出PWMTIM3->CCR1 = pulse
改变定时器输出占空比,示例为定时器3通道1重定向printf至串口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#include <stdio.h>
...
int fputc(int ch, FILE *stream)
{
/* 堵塞判断串口是否发送完成 */
while((USART1->SR & 0X40) == 0);
/* 串口发送完成,将该字符发送 */
USART1->DR = (uint8_t) ch;
return ch;
}
//重新定义fputc函数void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
弱定义外部中断回调函数,在主函数中自行添加此函数定义,达成中断条件后触发
待续
本文采用 CC BY-NC-SA 4.0 协议 ,转载请注明出处。