打印
[其他ST产品]

Mbed OS 的函数,改成HAL函数怎么写?请教请教

[复制链接]
596|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
豌豆爹|  楼主 | 2022-12-11 09:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  • TextLCD::TextLCD(PinName rs, PinName e, PinName d4, PinName d5,
  •                  PinName d6, PinName d7, LCDType type) : _rs(rs),
  •         _e(e), _d(d4, d5, d6, d7),
  •         _type(type) {
  •     _e  = 1;
  •     _rs = 0;            // command mode
  •     wait_us(1500);        // Wait 15ms to ensure powered up
  •     /* send "Display Settings" 3 times (Only top nibble of 0x30 as we've got 4-bit bus)*/
  •     for (int i=0; i<3; i++) {
  •         writeByte(0x3);
  •         wait_us(1640);  // this command takes 1.64ms, so wait for it
  •     }
  •     writeByte(0x2);     // 4-bit mode
  •     wait_us(40);    // most instructions take 40us
  •     writeCommand(0x28); // Function set 001 BW N F - -
  •     writeCommand(0x0C);
  •     writeCommand(0x6);  // Cursor Direction and Display Shift : 0000 01 CD S (CD 0-left, 1-right S(hift) 0-no, 1-yes
  •     cls();
  • }

复制代码

这个原来是Mbed OS 的函数,改成 HAl函数怎么搞?希望大师指导指导

使用特权

评论回复
沙发
家有两宝呀| | 2024-7-31 23:59 | 只看该作者
将Mbed OS的代码转换为使用HAL库的代码涉及到以下几个步骤:

定义引脚:根据具体的STM32型号,使用HAL库定义引脚。
初始化引脚:使用HAL GPIO初始化函数进行初始化。
延时函数:将Mbed的wait_us函数替换为HAL库中的延时函数。
GPIO操作:使用HAL库的GPIO操作函数

使用特权

评论回复
板凳
家有两宝呀| | 2024-7-31 23:59 | 只看该作者
初始化和定义引脚
首先定义引脚和初始化函数:

c

#include "stm32f4xx_hal.h"

// 定义引脚
#define RS_PIN GPIO_PIN_0
#define RS_PORT GPIOA
#define E_PIN GPIO_PIN_1
#define E_PORT GPIOA
#define D4_PIN GPIO_PIN_2
#define D4_PORT GPIOA
#define D5_PIN GPIO_PIN_3
#define D5_PORT GPIOA
#define D6_PIN GPIO_PIN_4
#define D6_PORT GPIOA
#define D7_PIN GPIO_PIN_5
#define D7_PORT GPIOA

// GPIO初始化函数
void GPIO_Init() {
    __HAL_RCC_GPIOA_CLK_ENABLE(); // 启用GPIOA时钟

    GPIO_InitTypeDef GPIO_InitStruct = {0};

    // 配置RS引脚
    GPIO_InitStruct.Pin = RS_PIN;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(RS_PORT, &GPIO_InitStruct);

    // 配置E引脚
    GPIO_InitStruct.Pin = E_PIN;
    HAL_GPIO_Init(E_PORT, &GPIO_InitStruct);

    // 配置数据引脚D4, D5, D6, D7
    GPIO_InitStruct.Pin = D4_PIN | D5_PIN | D6_PIN | D7_PIN;
    HAL_GPIO_Init(D4_PORT, &GPIO_InitStruct);
}

// 延时函数(微秒)
void delay_us(uint32_t us) {
    uint32_t start = DWT->CYCCNT;
    uint32_t ticks = us * (HAL_RCC_GetHCLKFreq() /


使用特权

评论回复
地板
gouguoccc| | 2024-8-1 08:18 | 只看该作者
这个OS好像宣布停止更新和维护了

使用特权

评论回复
5
onlycook| | 2024-8-2 17:11 | 只看该作者
将Mbed OS中的功能转换为使用STM32 HAL库的功能,主要涉及到对硬件访问方式的改变,因为Mbed OS和STM32 HAL库提供了不同的抽象层来与STM32微控制器交互。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

508

主题

1935

帖子

5

粉丝