這篇具有很好參考價值的文章主要介紹了STM32HAL庫常用庫函數(shù)說明。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。
系統(tǒng)函數(shù)
HAL_Delay(延時函數(shù))
void HAL_Delay(uint32_t Delay);
參數(shù) |
說明 |
Delay |
延時時間 |
|
數(shù)據(jù)類型:unsigned int 32位 |
返回值 |
無返回值 |
GPIO
HAL_GPIO_WritePin(GPIO引腳電平設(shè)置)
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
參數(shù) |
說明 |
*GPIOx |
引腳選澤,參數(shù)范圍:GPIOA~GPIOC等 |
GPIO_Pin |
引腳編號選擇,參數(shù)范圍:GPIO_PIN_0~GPIO_PIN_15等 |
PinState |
引腳狀態(tài)設(shè)置,參數(shù)范圍:GPIO_PIN_SET:高電平 |
|
GPIO_PIN_RESET:低電平 |
返回值 |
無返回值 |
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_TogglePin(GPIO電平翻轉(zhuǎn))
void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
參數(shù) |
說明 |
*GPIOx |
引腳選澤,參數(shù)范圍:GPIOA~GPIOC等 |
GPIO_Pin |
引腳編號選擇,參數(shù)范圍:GPIO_PIN_0~GPIO_PIN_15等 |
返回值 |
無返回值 |
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_15);
HAL_Delay(500);
HAL_GPIO_ReadPin(獲取GPIO引腳狀態(tài))
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
參數(shù) |
說明 |
*GPIOx |
引腳選澤,參數(shù)范圍:GPIOA~GPIOC等 |
GPIO_Pin |
引腳編號選擇,參數(shù)范圍:GPIO_PIN_0~GPIO_PIN_15等 |
返回值 |
返回GPIO狀態(tài) |
|
GPIO_PIN_SET:當(dāng)前狀態(tài)為高電平 |
|
GPIO_PIN_RESET:當(dāng)前狀態(tài)為低電平 |
if(HAL_GPIO_ReadPin(GPIOB,KEY1_Pin)==GPIO_PIN_RESET){
HAL_GPIO_WritePin(LED0_GPIO_Port,LED0_Pin,GPIO_PIN_SET);
}else{
HAL_GPIO_WritePin(LED0_GPIO_Port,LED0_Pin,GPIO_PIN_RESET);
}
Timer
HAL_TIM_Base_Start_IT(打開定時器)
HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim);
參數(shù) |
說明 |
*htim |
定時器選擇,范圍:&htim1~&htim8等 |
HAL_TIM_Base_Start_IT(&htim2);
HAL_TIM_Base_Stop_IT(關(guān)閉定時器中斷)
HAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim);
參數(shù) |
說明 |
*htim |
定時器選擇,范圍:&htim1~&htim8等 |
HAL_TIM_Base_Stop_IT(&htim2);
USART(串口)
HAL_UART_Transmit(阻塞式發(fā)送函數(shù))
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart,uint8_t *pData,uint16_t Size,uint32_t Timeout);
參數(shù) |
說明 |
*huart |
串口選擇,范圍:&huart1~&huart3等 |
*pData |
發(fā)送的數(shù)據(jù) |
Size |
發(fā)送數(shù)據(jù)的長度 |
Timerout |
超時時間 |
unsigned char str[]={"hello world"};
HAL_UART_Transmit(&huart1,str,sizeof(str),100);
HAL_UART_Transmit_IT(非阻塞式發(fā)送函數(shù))
HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart,uint8_t *pData,uint16_t Size);
參數(shù) |
說明 |
*huart |
串口選擇,范圍:&huart1~&huart3等 |
*pData |
發(fā)送的數(shù)據(jù) |
Size |
發(fā)送數(shù)據(jù)的長度 |
unsigned char str[]={"hello world"};
HAL_UART_Transmit_IT(&huart1,str,sizeof(str),100);
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart){
if(huart->Instance==USART1){
HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin);
}
}
HAL_UART_Receive(阻塞式接收函數(shù))——不推薦使用
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart,uint8_t *pData,uint16_t Size,uint32_t Timeout);
參數(shù) |
說明 |
*huart |
串口選擇,范圍:&huart1~&huart3等 |
*pData |
接收的數(shù)據(jù)存放位置 |
Size |
需要接收的長度 |
Timerout |
超時時間 |
unsigned char str[1];
HAL_UART_Receive(&huart1,str,1);
HAL_UART_Receive_IT(非阻塞式接收函數(shù))
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart,uint8_t *pData,uint16_t Size);
參數(shù) |
說明 |
*huart |
串口選擇,范圍:&huart1~&huart3等 |
*pData |
接收的數(shù)據(jù)存放位置 |
Size |
需要接收的長度 |
unsigned char str[1];
HAL_UART_Receive_IT(&huart1,str,1);
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){
if(huart->Instance==USART1){
if(str[0]==0x80){
HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin);
}
}
}
printf重定向
- 在開始修改代碼之前我們需要引用頭文件:stdio.h
- 修該fputc函數(shù)
int fputc(int c,FILE *stream){
HAL_UART_Transmit(&huart1,(uint8_t *)&c,1,100);
return c;
}
ADC
HAL_ADC_Start(阻塞式ADC轉(zhuǎn)換開始)
HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc);
參數(shù) |
說明 |
*hadc |
ADC選擇,范圍:&hadc1~&hadc3等 |
HAL_ADC_Stop(阻塞式ADC轉(zhuǎn)換停止)
HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef* hadc);
參數(shù) |
說明 |
*hadc |
ADC選擇,范圍:&hadc1~&hadc3等 |
HAL_ADC_Start_IT(非阻塞式ADC轉(zhuǎn)換開始)
HAL_StatusTypeDef HAL_ADC_Start_IT(ADC_HandleTypeDef* hadc);
參數(shù) |
說明 |
*hadc |
ADC選擇,范圍:&hadc1~&hadc3等 |
HAL_ADC_Stop_IT(非阻塞式ADC轉(zhuǎn)換停止)
HAL_StatusTypeDef HAL_ADC_Stop_IT(ADC_HandleTypeDef* hadc);
參數(shù) |
說明 |
*hadc |
ADC選擇,范圍:&hadc1~&hadc3等 |
HAL_ADC_PollForConversion(等待常規(guī)組轉(zhuǎn)換完成)
HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout)
參數(shù) |
說明 |
*hadc |
ADC選擇,范圍:&hadc1~&hadc3等 |
Timeout |
超時時間 |
返回值 |
狀態(tài) |
|
HAL_ERROR:錯誤 |
|
HAL_TIMEOUT:超時 |
|
HAL_OK:轉(zhuǎn)換完成 |
HAL_ADC_GetValue(獲取ADC轉(zhuǎn)換結(jié)果)
uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef* hadc);
參數(shù) |
說明 |
*hadc |
ADC選擇,范圍:&hadc1~&hadc3等 |
返回值 |
ADC轉(zhuǎn)換結(jié)果 |
ADC單通道應(yīng)用舉例
HAL_ADC_Start(&hadc1);
if(HAL_OK==HAL_ADC_PollForConversion(&hadc1,10)){
ADC_value=HAL_ADC_GetValue(&hadc1);
printf("當(dāng)前采集值為:%d\r\n",ADC_value);
}
HAL_ADC_Start_IT(&hadc1);
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc){
if(hadc->Instance==ADC1){
ADC_value=HAL_ADC_GetValue(&hadc1);
printf("當(dāng)前值:%d\r\n",ADC_value);
}
}
文章來源地址http://www.zghlxwxcb.cn/news/detail-401816.html
文章來源:http://www.zghlxwxcb.cn/news/detail-401816.html
到了這里,關(guān)于STM32HAL庫常用庫函數(shù)說明的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!
本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!