对MM32的初步感受:
第一次使用mm32,因为有mindsdk,配置完环境后,直接上手体验了几个demo,感觉mm32和stm32差别不大,上手体验很好,本次移植tft屏幕驱动,没费什么力气,一次成功。后续会在了解了解mm32替换stm32。
本次项目基础:
https://aijishu.com/a/1060000...
由于屏幕驱动中需要用到延时函数,而我没在MindSDK中找到systick相关的工程,正好看到有大佬移植完成了systick,所以直接用了。
有了延时函数后,离移植成功只需要两步了。
1.更改端口定义的GPIO高低电平的写入函数
2.更改gpio口初始化
//-----------------OLED端口定义----------------
#define OLED_SCLK_Clr() GPIO_WriteBit(GPIOA,GPIO_PIN_0,0u)
#define OLED_SCLK_Set() GPIO_WriteBit(GPIOA,GPIO_PIN_0,1u)
#define OLED_SDIN_Clr() GPIO_WriteBit(GPIOA,GPIO_PIN_1,0u)//DIN
#define OLED_SDIN_Set() GPIO_WriteBit(GPIOA,GPIO_PIN_1,1u)
#define OLED_RST_Clr() GPIO_WriteBit(GPIOA,GPIO_PIN_2,0u)//RES
#define OLED_RST_Set() GPIO_WriteBit(GPIOA,GPIO_PIN_2,1u)
#define OLED_DC_Clr() GPIO_WriteBit(GPIOA,GPIO_PIN_3,0u)//DC
#define OLED_DC_Set() GPIO_WriteBit(GPIOA,GPIO_PIN_3,1u)
#define OLED_CS_Clr() GPIO_WriteBit(GPIOA,GPIO_PIN_4,0u)//CS
#define OLED_CS_Set() GPIO_WriteBit(GPIOA,GPIO_PIN_4,1u)
#define OLED_BLK_Clr() GPIO_WriteBit(GPIOA,GPIO_PIN_5,0u)//BLK
#define OLED_BLK_Set() GPIO_WriteBit(GPIOA,GPIO_PIN_5,1u)
//GPIO初始化
GPIO_Init_Type GPIO_InitStructure;
RCC_EnableAHB1Periphs(RCC_AHB1_PERIPH_GPIOA, true);
GPIO_InitStructure.Pins = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5;
GPIO_InitStructure.PinMode = GPIO_PinMode_Out_PushPull;
GPIO_InitStructure.Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
GPIO_WriteBit(GPIOA,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5,1u);
//主函数
int main(void)
{
BOARD_Init();
printf("\r\n lcd example.\r\n");
LCD_ShowOneChinese(10,0,"极",RED);
LCD_ShowOneChinese(42,0,"术",RED);
LCD_ShowOneChinese(74,0,"社",RED);
LCD_ShowOneChinese(106,0,"区",RED);
LCD_ShowString(10,40,"MM32",RED);
while (1)
{
;
}
}
完成后用杜邦线屏幕和开发板,烧录程序。一次成功
本项目地址:
https://gitee.com/holly-knight/mm32_tft_lcd_demo
下个项目,准备体验了sd卡读取,最终打算做一个基于sd卡的iap升级操作