极客秀
搜索

第十五届蓝桥杯嵌入式赛道竞赛平台STM32G431相关代码基于CubeMX的整合

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

其板载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.

I2C设备使用

在原理图中我们可以看到其由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);//黑色填充    }

我们写段代码测试一下。

1.转载请保留原文链接谢谢!
2.本站所有资源文章出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。
3.本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户擦亮眼睛自行鉴别,做一个有主见和判断力的用户。
4.本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。
5.联系方式(#替换成@):pm#vimge.com

  相关内容