IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> CubeMX STM32 常用函数HAL库 -> 正文阅读

[嵌入式]CubeMX STM32 常用函数HAL库

初始化函数:

HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

读取输入电平函数:

HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_3)

设置输出电平函数:

HAL_GPIO_WritePin (GPIOA, GPIO_PIN_3, GPIO_PIN_SET)

电平翻转函数:

HAL_GPIO_TogglePin (GPIOA, GPIO_PIN_2)

延时200毫秒;

HAL_Delay(200);

中断处理函数:

void HAL_GPIO_EXTI_IRQHandler (uint16_t GPIO_Pin)

中断回调函数:

void HAL_GPIO_EXTI_Callback (uint16_t GPIO_Pin);?

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){

??????? if(GPIO_Pin==Key_1_Pin){

??????????? HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_1);

??? }

};

定时器更新中断回调函数

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

{

? if(htim->Instance == TIM6)

??????? HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5);

}

启动定时器(使用更新中断)。

HAL_TIM_Base_Start_IT (&htim6)

PWM接口函数

HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2);

定时器比较/捕获寄存器CCR设置函数:

__HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_2,PWM_value);

while (1)

? {

?????? if(PWM_value==0||PWM_value<10000)

?????????? PWM_value++;

?????? else if(PWM_value==10000)

?????????? PWM_value=0;

?????? __HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_2,PWM_value);

}}

修改重装载寄存器ARR函数

??? HAL_TIM_SET_AUTORELOAD (&htime6, 500)

串口接收函数

HAL_UART_Receive(&huart1,RecBuf,8,100)

发送函数

HAL_UART_Transmit(&huart1 ,RecBuf,8,100);

uint8_t RecBuf[8];

while (1)

? {

??????? if(HAL_UART_Receive(&huart1,RecBuf,8,100)==HAL_OK){

??????????? printf ("the response is:\r");

??????????? HAL_UART_Transmit(&huart1 ,RecBuf,8,100);

??????????? printf("\r");

??????? }

}

串口中断方式发送函数

HAL_UART_Transmit_IT(&huart1,(uint8_t *)RxBuffer,10);

串口中断方式接收函数

HAL_UART_Receive_IT(&huart1,(uint8_t *)RxBuffer,8);

串口发送中断回调函数:

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){

??????? if(huart->Instance==USART1){

??????????? Rxflag=1;

??????????? HAL_UART_Receive_IT(&huart1,(uint8_t *)RxBuffer,10);

??????? }

}

while (1)

? {

??????? if(Rxflag==1){

??????????? Rxflag=0;

??????????? HAL_UART_Transmit_IT(&huart1,(uint8_t *)RxBuffer,10);

??????? }

? }

串口中断通用处理函数:

void HAL_UART_IRQHandler(UART_HandleTypeDef *huart)

重写printf

#include "stdio.h"

int fputc(int ch,FILE *f){

??? HAL_UART_Transmit (&huart1 ,(uint8_t*)&ch ,1,HAL_MAX_DELAY);

??? return ch ;

}

int fgetc(FILE *f){

??? uint8_t ch;

??? HAL_UART_Receive (&huart1 ,(uint8_t*)&ch ,1,HAL_MAX_DELAY);

??? return ch ;

}

printf("%d",a);输出十进制整数 ???printf("\r");回车

DMA

void USART1_IRQHandler(void)

{

? /* USER CODE BEGIN USART1_IRQn 0 */

? /* USER CODE END USART1_IRQn 0 */

? HAL_UART_IRQHandler(&huart1);

? /* USER CODE BEGIN USART1_IRQn 1 */

if(__HAL_UART_GET_FLAG (&huart1,UART_FLAG_IDLE)!=RESET )

{

??? __HAL_UART_CLEAR_IDLEFLAG (&huart1);

??? HAL_UART_IdleCpltCallback(&huart1 );

}

? /* USER CODE END USART1_IRQn 1 */

}

#define LENGTH 100

uint8_t? RxBuffer[LENGTH];

uint8_t RecCount = 0;

uint8_t RxFlag = 0;

__HAL_UART_ENABLE_IT (&huart1,UART_IT_IDLE);

HAL_UART_Receive_DMA (&huart1 ,(uint8_t*)RxBuffer ,LENGTH );

while (1)

? {

??? /* USER CODE END WHILE */

??? /* USER CODE BEGIN 3 */

??????? if(RxFlag ==1)

??????? {

??????? RxFlag =0;

??????? RecCount = LENGTH-__HAL_DMA_GET_COUNTER (&hdma_usart1_rx);

??????? HAL_UART_Transmit_DMA (&huart1,(uint8_t*)RxBuffer,RecCount );

??????? RecCount = 0;

??????? __HAL_DMA_DISABLE (&hdma_usart1_rx );

??????? HAL_UART_Receive_DMA (&huart1 ,(uint8_t*)RxBuffer ,LENGTH );

??????? }

? }

void HAL_UART_RxCpltCallback(UART_HandleTypeDef? *huart)

{

??? if(huart->Instance==USART2 )

??? {HAL_UART_Receive_DMA (&huart1 ,(uint8_t*)RxBuffer ,LENGTH );

??????? }

}

void HAL_UART_IdleCpltCallback(UART_HandleTypeDef? *huart)

{

RxFlag =1;

??? HAL_UART_DMAStop(&huart1);

}

?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-18 11:20:34  更:2021-11-18 11:22:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:20:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码