| |
|
开发:
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例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |