STM32_标准库转hal库
1.串口UART
接收:
阻塞式:HAL_UART_Receive( )
阻塞式接收,有四个传参,串口句柄,要传输数据的地址,数据大小,超时时间,只有当接收到规定的字节或到阻塞最大时间程序才会继续运行
非阻塞式HAL_UART_Receive_IT()
非阻塞式接收数据,有三个参数,串口句柄,接收数据的地方,数据大小,当接收完相应大小数据就会进入中断回调函数,这个中断回调函数是全部串口共用的,所以使用时要先判断是那个串口来的数据
中断回调函数:void HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart)


要启用中断回调函数必须在配置串口时配置串口的中断,图中的nvic,当使用非阻塞式接收函数和发送函数带IT的函数,就会进入这个函数,这个函数是所有串口共用的,使用时要判断是那个串口触发的这个函数
与DMA配合:HAL_UART_Receive_DMA()
这个也是非阻塞式,有三个传参,串口句柄,接收数据的地方,数据大小,接收到的数据通过DMA直接存进接收数据的地方,不需要CPU干预
发送
阻塞式:HAL_UART_Transmit( )
有四个传参,串口句柄,要传输数据的地址,数据大小,超时时间
非阻塞式HAL_UART_Receive_IT()
有三个参数,串口句柄,发送数据的地址,数据大小,当发送完相应大小数据就会进入中断回调函数
与DMA配合:HAL_UART_Receive_DMA()
HAL_UART_Transmit_DMA()函数用于在DMA模式下启动串口数据发送。DMA控制器会自动将数据从内存缓冲区搬运到串口发送数据寄存器,整个过程无需CPU干预
2.ADC
过程
ADC使用整体过程:校准—>开启ADC转换——>读取ADC值
校准:HAL_ADCEx_Calibration_Start()
使用adc必须得使用这个函数
开启转换模式
规则组普通转换:HAL_ADC_Start()
注入组:HAL_ADCEx_InjectedStart()
只有一个参数
规则组转换后进回调函数:HAL_ADC_Start_IT()
注入组:HAL_ADCEx_InjectedStart_IT()
只有一个参数
规则组与DMA配合:HAL_ADC_Start_DMA()
注入组:HAL_ADCEx_InjectedStart_DMA()
这个函数有两个参数,ADC句柄,接收数据的地址,这个函数也会触发ADC的回调函数
获取值
规则组:HAL_ADC_GetValue()
注入组:HAL_ADCEx_InjectedGetValue()
注入组ADC回调函数:HAL_ADCEx_InjectedConvCpltCallback( )
规则组ADC回调函数 :void HAL_ADC_ConvCpltCallback (ADC_HandleTypeDef* hadc)

ADC的回调函数也是一样,全部ADC共用这个函数,所有使用时也要判断一下是那个触发的函数
3.定时器
开启
普通开启:HAL_TIM_Base_Start();
中断开启:HAL_TIM_Base_Start_IT()
开启后可进中断回调函数
与DMA配合:HAL_TIM_Base_Start_DMA()
关闭
HAL_TIM_Base_Stop()
HAL_TIM_Base_Stop_IT()
HAL_TIM_Base_Stop_DAM
设置参数
计数器:__HALTIM_SET_COUNTER()
设置计数器的值
自动重传器 :__HAL_TIM_SET_AUTORELOAD ( );
设置CRR:__HAL_TIM_SET_COMPARE ();
定时器回调函数:HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

