| 本帖最后由 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_threadHC32F460_RT_Thread-master\rt_thread\bsp\hc32f46x\drivers该BSP当前支持片内硬件USART、硬件I2C
 
  
3 RT-Thread应用示例( Shell+OLED+流水灯 )2.1 Shell串口  RT-Thread Shell串口使用USART3 
   2.2 OLED
 0.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测试示例
 2.2 流水灯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.3 运行结果/* LED0~3 toggle definition */
#define  LED0_TOGGLE()    PORT_Toggle(LED0_PORT, LED0_PIN)
#define  LED1_TOGGLE()    PORT_Toggle(LED1_PORT, LED1_PIN)
#define  LED2_TOGGLE()    PORT_Toggle(LED2_PORT, LED2_PIN)
#define  LED3_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);
    };
}
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/
 
 |