nich20xx 发表于 2020-10-28 08:28

【华大测评2】HC32F460_EVB运行RT-Thread4.0.1(Shell+OLED+流水灯)

本帖最后由 nich20xx 于 2020-10-28 08:33 编辑

1 前言华大半导体HC32F460是国产的MCU,是一款基于32bit Cortex-M4F内核 、集成FPU、MPU及支持SIMD指令DSP的高性能微控制器HC32F460PETB。最大主频168MHz,512K FLASH,192K SRAM,具有非常丰富的片上资源,支持2个独立12-bit 2.5MSPS ADC,DAC、1个PGA、3个高速比较器CMP,众多的通信接口有I2C、I2S、SPI、USART、SDIO、QSPI、CAN、USB2.0 FS,支持AES/HASH/TRNG数据加密功能RT-Thread 是国产的RTOS,是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台,也是一个组件完整丰富、高度可伸缩、简易开发、超低功耗、高安全性的物联网操作系统。RT-Thread 具备一个 IoT OS 平台所需的所有关键组件,例如GUI、网络协议栈、安全传输、低功耗组件等等。两个国产软硬件平台强强联合,是未来产品开发的一个非常好的组合。2 HC32F460_EVB BSP华大半导体有大神已经移植好了适配RT-Thread与HC32F460_EVB的BSP。
[*]下载 https://github.com/SourceWolf/HC32F460_RT_Thread/tree/master/rt_thread
[*]HC32F460_RT_Thread-master\rt_thread\bsp\hc32f46x\drivers
[*]该BSP当前支持片内硬件USART、硬件I2C

[*]可以通过ENV工具选择实际使用的芯片外设
3 RT-Thread应用示例( Shell+OLED+流水灯 )2.1 Shell串口RT-Thread Shell串口使用USART3

2.2 OLED0.91英寸的OLED(128*32) 使用I2C2。

OLED 128x32 软件驱动直接使用RT-Thread中的软件包u8g2。      打开rt-thread ENV工具,在menuconfig中,选择“RT-Thread online packages--->peripheral libraries and drivers---> U8G2: a monochrome graphic library”


[*]u8g2_port.c屏蔽所有rt_pin_mode操作(当前不支持pin)
[*]增加如下OLED测试示例
static void ssd1306_12832_hw_i2c_example(int argc,char *argv[])
{
    u8g2_t u8g2;

    // Initialization
    u8g2_Setup_ssd1306_i2c_128x32_univision_f( &u8g2, U8G2_R0, u8x8_byte_rt_hw_i2c, u8x8_rt_gpio_and_delay);
    u8g2_InitDisplay(&u8g2);
    u8g2_SetPowerSave(&u8g2, 0);

    /* full buffer example, setup procedure ends in _f */
    u8g2_ClearBuffer(&u8g2);
    u8g2_SetFont(&u8g2, u8g2_font_ncenB08_tr);
    u8g2_DrawStr(&u8g2, 1, 18, "U8g2 on HC32F460_EVB");
    u8g2_SendBuffer(&u8g2);
}
MSH_CMD_EXPORT(ssd1306_12832_hw_i2c_example, i2c ssd1306 sample);2.2 流水灯
/* LED0~3 toggle definition */
#defineLED0_TOGGLE()    PORT_Toggle(LED0_PORT, LED0_PIN)
#defineLED1_TOGGLE()    PORT_Toggle(LED1_PORT, LED1_PIN)
#defineLED2_TOGGLE()    PORT_Toggle(LED2_PORT, LED2_PIN)
#defineLED3_TOGGLE()    PORT_Toggle(LED3_PORT, LED3_PIN)

int32_t main(void)
{
    //......
    while(1)
    {
      LED0_TOGGLE();
      rt_thread_delay(DELAY_MS);
      LED1_TOGGLE();
      rt_thread_delay(DELAY_MS);
      LED2_TOGGLE();
      rt_thread_delay(DELAY_MS);
      LED3_TOGGLE();
      rt_thread_delay(DELAY_MS);
    };
}2.3 运行结果
[*]串口打印如下信息
[*]LED流水灯
shell命令窗口,输入ssd1306_12832_hw_i2c_example,OLED显示“u8g2 on HC32F460_EVB”4 参考
[*]HC32F460 RT-Thread BSP https://github.com/SourceWolf/HC32F460_RT_Thread/tree/master/rt_thread
[*]华大MCU官网 https://www.hdsc.com.cn/
[*]RT-Thread官网 https://www.rt-thread.org/

BettyBerry 发表于 2020-10-28 23:31

谢谢楼主分享 HC32F460的板子看起配置很齐全啊

范德萨大师傅 发表于 2020-10-31 21:01

u8g2_Setup_ssd1306_i2c_128x32_univision_f( &u8g2, U8G2_R0, u8x8_byte_rt_hw_i2c, u8x8_rt_gpio_and_delay);
    u8g2_InitDisplay(&u8g2);
    u8g2_SetPowerSave(&u8g2, 0);

人的发个哈哈 发表于 2020-10-31 21:02

当前不支持pin

RTX3080 发表于 2020-11-20 10:12

哪里能搞到这个板子?

rickluo 发表于 2020-11-20 10:17

RTX3080 发表于 2020-11-20 10:12
哪里能搞到这个板子?

联系我们,我们专业做开发板 "xyxchiip.taobao.com"

海滨消消 发表于 2020-11-23 11:21

华大半导体适配RT-Thread与HC32F460_EVB的BSP

Puremr 发表于 2020-11-26 09:21

Shell是什么意思呢?串口的指令交互吗、。
页: [1]
查看完整版本: 【华大测评2】HC32F460_EVB运行RT-Thread4.0.1(Shell+OLED+流水灯)