最近第十五届蓝桥杯也即将开始比赛了,我这边也收到了蓝桥杯官方提供的竞赛平台(虽然要还回去可恶真小气)

其板载DAP下载器,两路电压采集,两路频率输出,这里的频率输出由555定时器提供以及按钮和部分引出IO。

从官网中下载了嵌入式赛道的资料。

首先最最关心的还是屏幕问题。

资料中提供了HAL库和LL库的驱动,标准库玩家直呼退赛,但是没有提供相关CubeMX工程。

因此本期我们将实现CubeMX的配置与各功能的移植。

首先我们在CubeMX中找到STM32G431R8T6,找到我们的板子型号。

由于原理图中 没有看到相关的低速晶振 ,那么在RCC配置中我们只需要选择高速晶振旁路时钟源。

并且由于原理图中,驱动LCD利用了并口操作,使用了整组PC端口进行数据的写入,因此我们需要将相关的IO口全部配置为输出,并且将所有可配置端口设置为高速模式。

在LCD_Init函数中,我们可以将IO初始化的内容注释掉,这部分在CubeMX中已经完成了初始化。


    LCD_Init();//LCD初始化
    HAL_Delay(100);//等待初始化成功
    LCD_SetBackColor(Black);//设置背景为黑色
    LCD_SetTextColor(White);//设置字体颜色为白色
    LCD_Clear(Black);//黑色填充
    HAL_Delay(100);//等待

    LCD_DisplayStringLine(Line4, (unsigned char *)"    Hello,world.   ");//输出Hello World
    HAL_Delay(1000);//等待

在While前输入以上代码,我们即可实现在LCD中打印黑底白字的Hello World.

在原理图中我们可以看到其由M24C02以及MCP4017两个I2C设备

M24C02是一款EEPROM存储器,即电可擦可编程只读存储器。它采用串行I²C接口,存储容量为2Kbit,组织为256 x 8位。其工作电压范围为2.5~5.5V,最大时钟频率为400kHz。M24C02支持总线控制,通过驱动地址可以完成设备的选定及写入/读取控制。该芯片具有字节写入和片写入两种写入模式,可以方便地向EEPROM中写入数据。

MCP4017是一款可编程电阻,它内置了7位寄存器,提供了多种电阻调节功能。

但是其IO PB6/7并没有硬件I2C的功能,因此我们需要用软件模拟I2C。

将PB6和PB7设置为输出模式,这里需要开漏输出,推挽输出会导致IO烧毁,具体可以看看之前的文章,关于开漏和推挽输出的区别。

详细解析STM32中GPIO有四种模式

这里也不需要上拉电阻,因为原理图中板载上拉电阻了。

启动电平需要设置为高电平,高电平代表I2C设备空闲状态。

还有需要注意的是,GPIO设置为开漏输出是可以读取总线电平的,这个细节可能很多人不知道。

我们编程完我们的24C02的代码。


  char s[] = {'1','2','3','4','5'};
  char Data[5] = {‘0’};

定义一组待写入的数据和待会存放数据的缓存区。


    for(unsigned char i = 1;i<=255;i++)
    {
      M24C02_Write(i,i%10+'0');//写入数据
      c = M24C02_Read(i);
      LCD_DisplayChar(1,1,c);
      HAL_Delay(1000);
      LCD_Clear(Black);//黑色填充
    }
嘉立创PCB

还没有评论,抢个沙发!