灵动微电子 FTHR-G0001 点灯+移植oled

分享作者:test123
作者昵称:沈夜FTHR
评测品牌:灵动微电子
评测型号:FTHR-G0001
发布时间:2025-01-02 11:45:02
0
概要
灵动微电子 FTHR-G0001 点灯+移植oled
开源口碑分享内容

资料地址:https://www.mindmotion.com.cn/products/mm32mcu/value_line/mm32g_value/mm32g0001/

点灯测试 代码

void GPIO_Configure(void)
{
    GPIO_InitTypeDef GPIO_InitStruct;

    RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE);

    GPIO_StructInit(&GPIO_InitStruct);
    GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_11 | GPIO_Pin_10 | GPIO_Pin_6 | GPIO_Pin_5;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_High;
    GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOA, &GPIO_InitStruct);

    GPIO_WriteBit(GPIOA, GPIO_Pin_11 | GPIO_Pin_10 | GPIO_Pin_6 | GPIO_Pin_5, Bit_SET);
}

修改默认gpio 即可正常点亮板载led


oeld 移植代码

打开I2C_Master_SimulateWithGPIO 默认demo

void I2C_Configure(void)
{
    sI2C_SCL_Configure(0);
    sI2C_SDA_Configure(0);

    sI2C_SCL_Write(1);
    sI2C_SDA_Write(1);
}

查看初始化 函数 如下

直接全部复制。

查看代码 得知 scl 使用了 gpioa 0

sda使用了 gpio 4

按照scl a0

sda a4 连接即可

初始化 函数移植 移植的是stm32的demo

删掉stm32的代码,直接使用 前面复制的 gpio 初始化函数。

删掉他原来的函数

OLED_W_SCL();

OLED_W_SDA();

把复制的两个 改名,其他代码不变。到此 初始化 就移植完成。

sI2C_SCL_Write

sI2C_SDA_Write

引用头文件

#include "main.h"

#include "OLED.h"

man.c 测试程序


int main(void)
{
	//PLATFORM_Init();
	/*OLED初始化*/
	OLED_Init();
	
	/*在(0, 0)位置显示字符'A',字体大小为8*16点阵*/
	OLED_ShowChar(0, 0, 'A', OLED_8X16);
	
	/*在(16, 0)位置显示字符串"Hello World!",字体大小为8*16点阵*/
	OLED_ShowString(16, 0, "FTHR G0001!", OLED_8X16);
	
	/*在(0, 18)位置显示字符'A',字体大小为6*8点阵*/
	OLED_ShowChar(0, 18, 'A', OLED_6X8);
	
	/*在(16, 18)位置显示字符串"Hello World!",字体大小为6*8点阵*/
	OLED_ShowString(16, 18, "Hello World!", OLED_6X8);
	
	/*在(0, 28)位置显示数字12345,长度为5,字体大小为6*8点阵*/
	OLED_ShowNum(0, 28, 12345, 5, OLED_6X8);
	
	/*在(40, 28)位置显示有符号数字-66,长度为2,字体大小为6*8点阵*/
	OLED_ShowSignedNum(40, 28, -66, 2, OLED_6X8);
	
	/*在(70, 28)位置显示十六进制数字0xA5A5,长度为4,字体大小为6*8点阵*/
	OLED_ShowHexNum(70, 28, 0xA5A5, 4, OLED_6X8);
	
	/*在(0, 38)位置显示二进制数字0xA5,长度为8,字体大小为6*8点阵*/
	OLED_ShowBinNum(0, 38, 0xA5, 8, OLED_6X8);
	
	/*在(60, 38)位置显示浮点数字123.45,整数部分长度为3,小数部分长度为2,字体大小为6*8点阵*/
	OLED_ShowFloatNum(60, 38, 123.45, 3, 2, OLED_6X8);
	
	/*在(0, 48)位置显示汉字串"你好,世界。",字体大小为固定的16*16点阵*/
	OLED_ShowChinese(0, 48, "你好,世界。");
	
	/*在(96, 48)位置显示图像,宽16像素,高16像素,图像数据为Diode数组*/
	OLED_ShowImage(96, 48, 16, 16, Diode);
	
	/*在(96, 18)位置打印格式化字符串,字体大小为6*8点阵,格式化字符串为"[%02d]"*/
	OLED_Printf(96, 18, OLED_6X8, "[%02d]", 6);
	
	/*调用OLED_Update函数,将OLED显存数组的内容更新到OLED硬件进行显示*/
	OLED_Update();
	
	/*延时3000ms,观察现象*/
	Delay_ms(5000);
	
	/*清空OLED显存数组*/
	OLED_Clear();
	
	/*在(5, 8)位置画点*/
	OLED_DrawPoint(5, 8);
	
	/*获取(5, 8)位置的点*/
	if (OLED_GetPoint(5, 8))
	{
		/*如果指定点点亮,则在(10, 4)位置显示字符串"YES",字体大小为6*8点阵*/
		OLED_ShowString(10, 4, "YES", OLED_6X8);
	}
	else
	{
		/*如果指定点未点亮,则在(10, 4)位置显示字符串"NO ",字体大小为6*8点阵*/
		OLED_ShowString(10, 4, "NO ", OLED_6X8);
	}
	
	/*在(40, 0)和(127, 15)位置之间画直线*/
	OLED_DrawLine(40, 0, 127, 15);
	
	/*在(40, 15)和(127, 0)位置之间画直线*/
	OLED_DrawLine(40, 15, 127, 0);
	
	/*在(0, 20)位置画矩形,宽12像素,高15像素,未填充*/
	OLED_DrawRectangle(0, 20, 12, 15, OLED_UNFILLED);
	
	/*在(0, 40)位置画矩形,宽12像素,高15像素,填充*/
	OLED_DrawRectangle(0, 40, 12, 15, OLED_FILLED);
	
	/*在(20, 20)、(40, 25)和(30, 35)位置之间画三角形,未填充*/
	OLED_DrawTriangle(20, 20, 40, 25, 30, 35, OLED_UNFILLED);
	
	/*在(20, 40)、(40, 45)和(30, 55)位置之间画三角形,填充*/
	OLED_DrawTriangle(20, 40, 40, 45, 30, 55, OLED_FILLED);
	
	/*在(55, 27)位置画圆,半径8像素,未填充*/
	OLED_DrawCircle(55, 27, 8, OLED_UNFILLED);
	
	/*在(55, 47)位置画圆,半径8像素,填充*/
	OLED_DrawCircle(55, 47, 8, OLED_FILLED);
	
	/*在(82, 27)位置画椭圆,横向半轴12像素,纵向半轴8像素,未填充*/
	OLED_DrawEllipse(82, 27, 12, 8, OLED_UNFILLED);
	
	/*在(82, 47)位置画椭圆,横向半轴12像素,纵向半轴8像素,填充*/
	OLED_DrawEllipse(82, 47, 12, 8, OLED_FILLED);
	
	/*在(110, 18)位置画圆弧,半径15像素,起始角度25度,终止角度125度,未填充*/
	OLED_DrawArc(110, 18, 15, 25, 125, OLED_UNFILLED);
	
	/*在(110, 38)位置画圆弧,半径15像素,起始角度25度,终止角度125度,填充*/
	OLED_DrawArc(110, 38, 15, 25, 125, OLED_FILLED);
	
	/*调用OLED_Update函数,将OLED显存数组的内容更新到OLED硬件进行显示*/
	OLED_Update();
	
	/*延时3000ms,观察现象*/
	Delay_ms(3000);
	
	while (1)
	{
		for (uint8_t i = 0; i < 4; i ++)
		{
			/*将OLED显存数组部分数据取反,从(0, i * 16)位置开始,宽128像素,高16像素*/
			OLED_ReverseArea(0, i * 16, 128, 16);
			
			/*调用OLED_Update函数,将OLED显存数组的内容更新到OLED硬件进行显示*/
			OLED_Update();
			
			/*延时1000ms,观察现象*/
			Delay_ms(1000);
			
			/*把取反的内容翻转回来*/
			OLED_ReverseArea(0, i * 16, 128, 16);
		}
		
		/*将OLED显存数组全部数据取反*/
		OLED_Reverse();
		
		/*调用OLED_Update函数,将OLED显存数组的内容更新到OLED硬件进行显示*/
		OLED_Update();
		
		/*延时1000ms,观察现象*/
		Delay_ms(1000);
	}
}

接下来 就能正常显示 FTHR-G0001 以及其他字符。

试用体验,demo都可以编译 无报错。

例子丰富 拿来复制替换 就能用。

无论是学习,还是国产替代,都非常方便。


全部评论
暂无评论
0/144