本帖最后由 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
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 */
#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);
};
}
2.3 运行结果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/
|