用HAL库改写江科大的stm32入门例子4-1 OLED

大体 步骤:

step1:使用STM32CubeMX初始化I2C1,生成初始化代码
step2:将任意一个库导入到工程,配置好编译路径
step3:调用函数即可

IIC原理图:

I2c通讯时序图:

接线图:

先设置clock:

 

开始重点:GPIO引脚映射:(pb8、pb9)

i2c1设置:

 引入oled驱动:

驱动文件在共享网盘中,有需要自行下载:

由于我们自己重新映射了iic 引脚,要在oled.中修改引脚:

main函数中引入oled.h

测试代码:

		/*模块初始化*/
	OLED_Init();		//OLED初始化
	
	/*OLED显示*/
	OLED_ShowChar(1, 1, 'A');				//1行1列显示字符A

效果:

ps:

另外 oled 设备要注意一下设备地址:我们这个oled 地址是0x78

### 关于江科大 STM32 开发 HAL 的使用情况 江科大STM32 的开发过程中并未完全基于 HAL 进行设计,而是更多依赖传统的函数方式实现功能[^3]。然而,在实际应用中,许多开发者通过将传统函数的方式移植HAL 上,从而实现了更现代化的功能开发流程。 #### 1. ADC 功能改写 对于 ADC 功能,江科大的原始教程可能采用的是标准外设 (Standard Peripheral Library),而将其改写HAL 版本时,则需要重新配置初始化结构体 `ADC_HandleTypeDef` 并调用相应的 HAL 函数来完成电压采集的任务[^1]。以下是典型的 HAL ADC 初始化代码: ```c // 定义 ADC 句柄 ADC_HandleTypeDef hadc; void MX_ADC_Init(void) { // 配置 ADC 结构体 hadc.Instance = ADC1; hadc.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4; // 设置时钟分频 hadc.Init.Resolution = ADC_RESOLUTION_12B; // 设置分辨率 hadc.Init.ScanConvMode = DISABLE; // 单通道模式 hadc.Init.ContinuousConvMode = ENABLE; // 连续转换模式 hadc.Init.DiscontinuousConvMode = DISABLE; // 禁用不连续模式 hadc.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT; // 数据右对齐 hadc.Init.NbrOfConversion = 1; // 转换次数 if (HAL_ADC_Init(&hadc) != HAL_OK) { // 初始化 ADC Error_Handler(); } } ``` 上述代码展示了如何利用 HAL 初始化 ADC 模块,并设置其工作参数。 #### 2. 流水灯与按键控制 LED 针对流水灯和按键控制 LED 的功能,江科大的原版教程可能是基于标准外设编写的。当迁移到 HAL 时,可以借助 STM32CubeMX 自动生成 GPIO 和中断的相关配置代码[^2]。随后仅需编写简单的逻辑处理即可完成功能扩展。 #### 3. OLED 显示屏驱动差异 江科大原有的 OLED 驱动程序通常包含了手动定义的引脚映射关系。而在 HAL 环境下,这些引脚定义已经由 STM32CubeMX 自动生成,因此可以直接注释掉原有代码中的引脚声明部分。这样不仅简化了代码维护成本,还提高了可读性和兼容性。 #### 4. 温湿度传感器 DHT11 改写 为了适配 HAL 环境下的 DHT11 接口编程,可以通过修改头文件以及相关 API 来支持新的硬件抽象层接口[^4]。例如,GPIO 输入/输出切换可通过如下方法实现: ```c void DHT11_IO_IN(void) { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET); } void DHT11_IO_OUT(void) { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET); } ``` 以上片段说明了如何结合 HAL 提供的基础服务构建更高层次的应用框架。 #### 5. HC-SR04 超声波测距模块集成 最后提到的距离测量案例也体现了从传统HAL 迁移的过程。具体而言,触发信号发送 (`TRIG`) 和回响信号接收 (`ECHO`) 均能通过 HAL 中断机制高效管理,配合时间戳计算得出最终结果[^5]。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值