当前位置: 首页 > news >正文

STM32的HAL编码流程总结(上部)

目录

  • 一、GPIO
  • 二、中断系统
  • 三、USART串口通信
  • 四、I2C通信
  • 五、定时器

一、GPIO

1.选择调试类型
在SYS中Debug选择Serial Wire模式
在这里插入图片描述

2.选择时钟源
在RCC中将HSE和LSH都选择为内部晶振
在这里插入图片描述

3.时钟树配置
在这里插入图片描述
4.GPIO配置
在芯片图上选择开启的引脚和其功能
在这里插入图片描述

配置引脚的各自属性
在这里插入图片描述

5.工程文件配置
配置工程文件的名字,位置等
Toolchain/IDE:选择用于调试的工具,生成对应的文件
在这里插入图片描述
选择“仅添加重要库”和“生成对应.c/.h文件”,最后点击GENERATE CODE生成文件
在这里插入图片描述

二、中断系统

1.选择调试类型
在SYS中Debug选择Serial Wire模式
在这里插入图片描述

2.选择时钟源
在RCC中将HSE和LSH都选择为内部晶振
在这里插入图片描述

3.时钟树配置
在这里插入图片描述
4.GPIO配置
引脚的复用选择
在这里插入图片描述

引脚属性的配置
在这里插入图片描述

5.NVIC的配置

引脚开启NVIC
在这里插入图片描述

配置中断的优先级
在这里插入图片描述

6.工程文件配置
配置工程文件的名字,位置等

在这里插入图片描述
选择“仅添加重要库”和“生成对应.c/.h文件”,最后点击GENERATE CODE生成文件
在这里插入图片描述
7.重写回调函数
重写中断服务函数中调用的回调函数

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{if (GPIO_Pin == GPIO_PIN_10){HAL_Delay(15);// 防抖: 延迟15ms之后再次检测是否仍然是高电平,if (HAL_GPIO_ReadPin(GPIOF, GPIO_Pin) == GPIO_PIN_SET){HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_0);}}
}

三、USART串口通信

1.选择调试类型
在SYS中Debug选择Serial Wire模式
在这里插入图片描述

2.选择时钟源
在RCC中将HSE和LSH都选择为内部晶振
在这里插入图片描述

3.时钟树配置
在这里插入图片描述

4.USART配置

通过开启USART功能,HAL库能自动配置相应的GPIO
在这里插入图片描述

属性配置
在这里插入图片描述
开启中断
在这里插入图片描述

5.工程文件配置
配置工程文件的名字,位置等

在这里插入图片描述
选择“仅添加重要库”和“生成对应.c/.h文件”,最后点击GENERATE CODE生成文件
在这里插入图片描述

6.重写回调函数

uint8_t rxBuff[1000]; // 接收缓冲区
// Size 是实际接收的数据的长度
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size) 
{if (huart1.Instance == USART1){HAL_UART_Transmit(&huart1, rxBuff, Size, HAL_MAX_DELAY);HAL_UARTEx_ReceiveToIdle_IT(&huart1, rxBuff, 1000);}
}

四、I2C通信

1.选择调试类型
在SYS中Debug选择Serial Wire模式
在这里插入图片描述

2.选择时钟源
在RCC中将HSE和LSH都选择为内部晶振
在这里插入图片描述

3.时钟树配置
在这里插入图片描述

4.I2C配置
I2C选择为I2C
在这里插入图片描述

5.I2C发送和读取

//ADDR为该外设模块的读取指令地址
#define ADDR 0xA0
uint8_t innerAddr = 0x00;
//I2C初始配置
MX_I2C2_Init();
//向0x00地址中写入
HAL_I2C_Mem_Write(&hi2c2,ADDR,innerAddr,I2C_MEMADD_SIZE_8BIT, &byte, 1, 2000);
//读取0x00地址中
HAL_I2C_Mem_Read(&hi2c2, ADDR + 1, innerAddr, I2C_MEMADD_SIZE_8BIT, &byte, 1, 2000);

五、定时器

1.选择调试类型
在SYS中Debug选择Serial Wire模式
在这里插入图片描述

2.选择时钟源
在RCC中将HSE和LSH都选择为内部晶振
在这里插入图片描述

3.时钟树配置
在这里插入图片描述

4.通用定时器配置

在这里插入图片描述
5.工程文件配置
配置工程文件的名字,位置等

在这里插入图片描述
选择“仅添加重要库”和“生成对应.c/.h文件”,最后点击GENERATE CODE生成文件
在这里插入图片描述

6.定时器运用
使用通用定时器不断改变PWM的占空比,可以实现呼吸灯等效果

//添加修改占空比的函数
void setDutyCycle(uint16_t dutyCycle)
{// 设置捕获比较寄存器的值__HAL_TIM_SetCompare(&htim5, TIM_CHANNEL_2, dutyCycle);
}void main(){MX_TIM5_Init();HAL_TIM_PWM_Start(&htim5, TIM_CHANNEL_2);uint8_t dutyCycle = 1;int8_t step = 1;while (1){if (dutyCycle <= 0 || dutyCycle >= 99){step = -step;}dutyCycle += step;setDutyCycle(dutyCycle);HAL_Delay(10);}
}

文章转载自:

http://t4cPvYX4.dqkcn.cn
http://zqL0Y1OT.dqkcn.cn
http://RcKijtDz.dqkcn.cn
http://BGUJivk2.dqkcn.cn
http://lhEE1BuF.dqkcn.cn
http://DGs04fbf.dqkcn.cn
http://4HJ4AC2A.dqkcn.cn
http://Rcgb5HTF.dqkcn.cn
http://ETkYT7VA.dqkcn.cn
http://7rHc5zfx.dqkcn.cn
http://FVIqe61U.dqkcn.cn
http://DZlaMsOP.dqkcn.cn
http://0cinGySA.dqkcn.cn
http://86XasbyX.dqkcn.cn
http://VVXLGcvP.dqkcn.cn
http://naRNguKZ.dqkcn.cn
http://lHEP57Dg.dqkcn.cn
http://PXD6U8qk.dqkcn.cn
http://8WxQtYkq.dqkcn.cn
http://LO8ihr3n.dqkcn.cn
http://yvJelti0.dqkcn.cn
http://ZSuqkv9Q.dqkcn.cn
http://KZkq3Enb.dqkcn.cn
http://V6hHY4CD.dqkcn.cn
http://HUZgsbPV.dqkcn.cn
http://ds3WFH0P.dqkcn.cn
http://jlBy5KZ4.dqkcn.cn
http://t38LZKDA.dqkcn.cn
http://un3YyULS.dqkcn.cn
http://d9QJOW7Y.dqkcn.cn
http://www.dtcms.com/a/216962.html

相关文章:

  • LY/T 2714-2016 木塑门套线检测
  • 百胜咨询公司:企业EcoVadis认证的专业导航者
  • C-字符串函数
  • 第9章:网络协议栈与 IoT 通信
  • 低空经济管理系统设计方案
  • 大模型评测体系建设方向
  • 第二届Parloo 主线题目分析与思考
  • python打卡day38
  • 物流项目第七期(路线规划之Neo4j的应用)
  • ImageMagick 是默认使用 CPU 来处理图像,也具备利用 GPU 加速的潜力
  • 从“学术杠精”到“学术创新”
  • 使用 mysqldump 获取 MySQL 表的完整创建 DDL
  • 如何在WordPress网站中添加相册/画廊
  • PyTorch 2.1新特性:TorchDynamo如何实现30%训练加速(原理+自定义编译器开发)
  • 车载通信网络 --- OSI模型:网络层
  • 国芯思辰| 同步降压转换器CN2020应用于智能电视,替换LMR33620
  • 数据结构期末模拟试卷
  • 2025年上半年第2批信息系统项目管理师论文真题解析与范文
  • pgsql 查看每张表大小
  • Python实战:打造高效通讯录管理系统
  • DD3118替代GL3213S 免晶振USB3.0读卡器控制芯片
  • C3P0连接池的使用方法和源码分析
  • 基于Python技术的面部考勤微信小程序的设计与实现
  • WPF【11_2】WPF实战-重构与美化(Entity Framework)-示例
  • Python深度挖掘:openpyxl与pandas高效数据处理实战
  • [问题解决]:Unable to find image ‘containrrr/watchtower:latest‘ locally
  • Python实现自动物体识别---基于深度学习的AI应用实战
  • Orpheus-TTS:AI文本转语音,免费好用的TTS系统
  • 吉林省CCPC与全国邀请赛(东北地区赛)游记
  • Visual Studio编译当前文件