芯片解密HC32L136开发板上配有一个笔段式的液晶屏,但无奈的是厂家却没提供一个能直接调用的显示函数。
在没解决该显示屏的显示函数前,先以轻车熟路的OLED屏来实现显示的问题。
由于手头的OLED屏是一款I2C接口的单色显示屏,故另其与MCU的连接关系为:
PA11:SCL
PA12:SDA
使这2个引脚输出高低电平的语句定义为:
#define OLED_SCLK_Set() Gpio_SetIO(GpioPortA, GpioPin11)
#define OLED_SCLK_Clr() Gpio_ClrIO(GpioPortA, GpioPin11);
#define OLED_SDIN_Set() Gpio_SetIO(GpioPortA, GpioPin12)
#define OLED_SDIN_Clr() Gpio_ClrIO(GpioPortA, GpioPin12);
分配2个引脚为输出功能的函数为:
- void App_OledInit(void)
- {
- stc_gpio_cfg_t stcGpioCfg;
- ///< 打开GPIO外设时钟门控
- Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
- ///< 端口方向配置->输出(其它参数与以上(输入)配置参数一致)
- stcGpioCfg.enDir = GpioDirOut;
- ///< 端口上下拉配置->下拉
- stcGpioCfg.enPu = GpioPuDisable;
- stcGpioCfg.enPd = GpioPdEnable;
- ///< GPIO IO OLED端口初始化
- Gpio_Init(GpioPortA, GpioPin11, &stcGpioCfg);
- Gpio_Init(GpioPortA, GpioPin12, &stcGpioCfg);
- }
复制代码 实现图1
显示效果的主程序为:- int32_t main(void)
- {
- stc_rtc_time_t readtime;
- Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE); //GPIO外设时钟打开
- Sysctrl_SetPeripheralGate(SysctrlPeripheralRtc,TRUE); //RTC模块时钟打开
- Sysctrl_ClkSourceEnable(SysctrlClkRCL, TRUE);
- RTC_Cfg(); //配置RTC
- EnableNvic(RTC_IRQn, IrqLevel3, TRUE); //使能RTC中断向量
- Rtc_Cmd(TRUE); //使能RTC开始计数
- App_OledInit();
- OLED_Init();
- OLED_Clear();
- OLED_ShowString(0,0,"HC32L136 TEST",16);
- OLED_ShowString(0,2,"OLED DISPLAY",16);
- while (1);
- }