打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【新提醒】HC32L136开发板的OLED驱动及应用
HC32L136开发板上配有一个笔段式的液晶屏,但无奈的是厂家却没提供一个能直接调用的显示函数。
在没解决该显示屏的显示函数前,先以轻车熟路的OLED屏来实现显示的问题。
由于手头的OLED屏是一款I2C接口的单色显示屏,故另其与MCU的连接关系为:
PA11SCL
PA12SDA
使这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个引脚为输出功能的函数为:
  1. void App_OledInit(void)
  2. {
  3. stc_gpio_cfg_t stcGpioCfg;
  4. ///< 打开GPIO外设时钟门控
  5. Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
  6. ///< 端口方向配置->输出(其它参数与以上(输入)配置参数一致)
  7. stcGpioCfg.enDir = GpioDirOut;
  8. ///< 端口上下拉配置->下拉
  9. stcGpioCfg.enPu = GpioPuDisable;
  10. stcGpioCfg.enPd = GpioPdEnable;
  11. ///< GPIO IO OLED端口初始化
  12. Gpio_Init(GpioPortA, GpioPin11, &stcGpioCfg);
  13. Gpio_Init(GpioPortA, GpioPin12, &stcGpioCfg);
  14. }
复制代码

实现图1显示效果的主程序为:
  1. int32_t main(void)
  2. {
  3. stc_rtc_time_t readtime;
  4. Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE);  //GPIO外设时钟打开
  5. Sysctrl_SetPeripheralGate(SysctrlPeripheralRtc,TRUE);    //RTC模块时钟打开
  6. Sysctrl_ClkSourceEnable(SysctrlClkRCL, TRUE);
  7. RTC_Cfg();                                        //配置RTC
  8. EnableNvic(RTC_IRQn, IrqLevel3, TRUE);                //使能RTC中断向量
  9. Rtc_Cmd(TRUE);                                   //使能RTC开始计数
  10. App_OledInit();
  11. OLED_Init();
  12. OLED_Clear();
  13. OLED_ShowString(0,0,"HC32L136 TEST",16);
  14. OLED_ShowString(0,2,"OLED DISPLAY",16);
  15. while (1);
  16. }
复制代码

1  OLED屏显示效果
实现RTC时间设置的函数为:
  1. void RTC_Cfg(void)
  2. {
  3. stc_rtc_initstruct_t RtcInitStruct;
  4. RtcInitStruct.rtcAmpm = RtcPm;        //12小时制
  5. RtcInitStruct.rtcClksrc = RtcClkRcl;       //内部低速时钟
  6. RtcInitStruct.rtcPrdsel.rtcPrdsel = RtcPrds;  //周期中断类型PRDS
  7. RtcInitStruct.rtcPrdsel.rtcPrds = Rtc1S;      //周期中断事件间隔
  8. RtcInitStruct.rtcTime.u8Second = 0x55;
  9. RtcInitStruct.rtcTime.u8Minute = 0x55;
  10. RtcInitStruct.rtcTime.u8Hour   = 0x10;
  11. RtcInitStruct.rtcTime.u8Day    = 0x06;
  12. RtcInitStruct.rtcTime.u8DayOfWeek = 0x04;
  13. RtcInitStruct.rtcTime.u8Month  = 0x10;
  14. RtcInitStruct.rtcTime.u8Year   = 0x20;
  15. RtcInitStruct.rtcCompen = RtcCompenEnable;
  16. RtcInitStruct.rtcCompValue = 0;//补偿值根据实际情况进行补偿
  17. Rtc_Init(&RtcInitStruct);
  18. Rtc_AlmIeCmd(TRUE);                  //使能闹钟中断
  19. }
复制代码

实现图3  RTC计时效果的主程序为:
  1. int32_t main(void)
  2. {
  3. stc_rtc_time_t readtime;
  4. Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE);   //GPIO外设时钟打开
  5. Sysctrl_SetPeripheralGate(SysctrlPeripheralRtc,TRUE);     //RTC模块时钟打开
  6. Sysctrl_ClkSourceEnable(SysctrlClkRCL, TRUE);
  7. RTC_Cfg();                                        //配置RTC
  8. EnableNvic(RTC_IRQn, IrqLevel3, TRUE);                //使能RTC中断向量
  9. Rtc_Cmd(TRUE);                                   //使能RTC开始计数
  10. App_OledInit();
  11. OLED_Init();
  12. OLED_Clear();
  13. OLED_ShowString(0,0,"HC32L136 TEST",16);
  14. OLED_ShowString(0,2,"OLED  &  RTC",16);      
  15. delay1ms(2000);
  16. OLED_Clear();
  17. OLED_ShowString(0,0,"20  -  -",16);
  18. OLED_ShowString(0,2,"    :  :",16);  
  19. while (1)
  20. {
  21. if(flag == 1)
  22. {
  23. flag = 0;
  24. Rtc_ReadDateTime(&readtime);
  25. second = readtime.u8Second;
  26. minute = readtime.u8Minute;
  27. hour   = readtime.u8Hour;
  28. day    = readtime.u8Day;
  29. week   = readtime.u8DayOfWeek;
  30. month  = readtime.u8Month;
  31. year   = readtime.u8Year;
  32. OLED_ShowNum(16,0,year/16*10+year%16,2,16);
  33. OLED_ShowNum(40,0,month/16*10+month%16,2,16);
  34. OLED_ShowNum(64,0,day/16*10+day%16,2,16);
  35. OLED_ShowNum(16,2,hour/16*10+hour%16,2,16);
  36. OLED_ShowNum(40,2,minute/16*10+minute%16,2,16);
  37. OLED_ShowNum(64,2,second/16*10+second%16,2,16);
  38. }
  39. }
  40. }
复制代码


2  RTC起始界面

3.jpg (16.26 KB, 下载次数: 2)

下载附件 保存到相册

2020-10-6 12:33 上传


3  RTC计时效果
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
EIC中断和GPIO中断
Stm32中文手册学习笔记
关于STM8L低功耗设计测试分享
cortex
常见传感器和芯片的介绍
STM32F103综合2
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服