系统函数
hal_delay(延时函数)
void hal_delay(uint32_t delay);
参数 | 说明 |
---|
delay | 延时时间 |
| 数据类型:unsigned int 32位 |
返回值 | 无返回值 |
gpio
hal_gpio_writepin(gpio引脚电平设置)
void hal_gpio_writepin(gpio_typedef *gpiox, uint16_t gpio_pin, gpio_pinstate pinstate);
参数 | 说明 |
---|
*gpiox | 引脚选泽,参数范围:gpioa~gpioc等 |
gpio_pin | 引脚编号选择,参数范围:gpio_pin_0~gpio_pin_15等 |
pinstate | 引脚状态设置,参数范围: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电平翻转)
void hal_gpio_togglepin(gpio_typedef *gpiox, uint16_t gpio_pin);
参数 | 说明 |
---|
*gpiox | 引脚选泽,参数范围:gpioa~gpioc等 |
gpio_pin | 引脚编号选择,参数范围:gpio_pin_0~gpio_pin_15等 |
返回值 | 无返回值 |
hal_gpio_togglepin(gpiob,gpio_pin_15);
hal_delay(500);
hal_gpio_readpin(获取gpio引脚状态)
gpio_pinstate hal_gpio_readpin(gpio_typedef *gpiox, uint16_t gpio_pin);
参数 | 说明 |
---|
*gpiox | 引脚选泽,参数范围:gpioa~gpioc等 |
gpio_pin | 引脚编号选择,参数范围:gpio_pin_0~gpio_pin_15等 |
返回值 | 返回gpio状态 |
| gpio_pin_set:当前状态为高电平 |
| gpio_pin_reset:当前状态为低电平 |
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);
参数 | 说明 |
---|
*htim | 定时器选择,范围:&htim1~&htim8等 |
hal_tim_base_start_it(&htim2);
hal_tim_base_stop_it(关闭定时器中断)
hal_statustypedef hal_tim_base_stop_it(tim_handletypedef *htim);
参数 | 说明 |
---|
*htim | 定时器选择,范围:&htim1~&htim8等 |
hal_tim_base_stop_it(&htim2);
usart(串口)
hal_uart_transmit(阻塞式发送函数)
hal_statustypedef hal_uart_transmit(uart_handletypedef *huart,uint8_t *pdata,uint16_t size,uint32_t timeout);
参数 | 说明 |
---|
*huart | 串口选择,范围:&huart1~&huart3等 |
*pdata | 发送的数据 |
size | 发送数据的长度 |
timerout | 超时时间 |
unsigned char str[]={"hello world"};
hal_uart_transmit(&huart1,str,sizeof(str),100);
hal_uart_transmit_it(非阻塞式发送函数)
hal_statustypedef hal_uart_transmit_it(uart_handletypedef *huart,uint8_t *pdata,uint16_t size);
参数 | 说明 |
---|
*huart | 串口选择,范围:&huart1~&huart3等 |
*pdata | 发送的数据 |
size | 发送数据的长度 |
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(阻塞式接收函数)——不推荐使用
hal_statustypedef hal_uart_receive(uart_handletypedef *huart,uint8_t *pdata,uint16_t size,uint32_t timeout);
参数 | 说明 |
---|
*huart | 串口选择,范围:&huart1~&huart3等 |
*pdata | 接收的数据存放位置 |
size | 需要接收的长度 |
timerout | 超时时间 |
unsigned char str[1];
hal_uart_receive(&huart1,str,1);
hal_uart_receive_it(非阻塞式接收函数)
hal_statustypedef hal_uart_receive_it(uart_handletypedef *huart,uint8_t *pdata,uint16_t size);
参数 | 说明 |
---|
*huart | 串口选择,范围:&huart1~&huart3等 |
*pdata | 接收的数据存放位置 |
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函数
int fputc(int c,file *stream){
hal_uart_transmit(&huart1,(uint8_t *)&c,1,100);
return c;
}
adc
hal_adc_start(阻塞式adc转换开始)
hal_statustypedef hal_adc_start(adc_handletypedef* hadc);
参数 | 说明 |
---|
*hadc | adc选择,范围:&hadc1~&hadc3等 |
hal_adc_stop(阻塞式adc转换停止)
hal_statustypedef hal_adc_stop(adc_handletypedef* hadc);
参数 | 说明 |
---|
*hadc | adc选择,范围:&hadc1~&hadc3等 |
hal_adc_start_it(非阻塞式adc转换开始)
hal_statustypedef hal_adc_start_it(adc_handletypedef* hadc);
参数 | 说明 |
---|
*hadc | adc选择,范围:&hadc1~&hadc3等 |
hal_adc_stop_it(非阻塞式adc转换停止)
hal_statustypedef hal_adc_stop_it(adc_handletypedef* hadc);
参数 | 说明 |
---|
*hadc | adc选择,范围:&hadc1~&hadc3等 |
hal_adc_pollforconversion(等待常规组转换完成)
hal_statustypedef hal_adc_pollforconversion(adc_handletypedef* hadc, uint32_t timeout)
参数 | 说明 |
---|
*hadc | adc选择,范围:&hadc1~&hadc3等 |
timeout | 超时时间 |
返回值 | 状态 |
| hal_error:错误 |
| hal_timeout:超时 |
| hal_ok:转换完成 |
hal_adc_getvalue(获取adc转换结果)
uint32_t hal_adc_getvalue(adc_handletypedef* hadc);
参数 | 说明 |
---|
*hadc | adc选择,范围:&hadc1~&hadc3等 |
返回值 | adc转换结果 |
adc单通道应用举例
hal_adc_start(&hadc1);
if(hal_ok==hal_adc_pollforconversion(&hadc1,10)){
adc_value=hal_adc_getvalue(&hadc1);
printf("当前采集值为:%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\r\n",adc_value);
}
}
发表评论