对MM32的初步感受:
第一次使用mm32,因为有mindsdk,配置完环境后,直接上手体验了几个demo,感觉mm32和stm32差别不大,上手体验很好,本次移植tft屏幕驱动,没费什么力气,一次成功。后续会在了解了解mm32替换stm32。
由于屏幕驱动中需要用到延时函数,而我没在MindSDK中找到systick相关的工程,正好看到有大佬移植完成了systick,所以直接用了。
有了延时函数后,离移植成功只需要两步了。
1.更改端口定义的GPIO高低电平的写入函数
2.更改gpio口初始化
#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)
#define OLED_SDIN_Set() GPIO_WriteBit(GPIOA,GPIO_PIN_1,1u)
#define OLED_RST_Clr() GPIO_WriteBit(GPIOA,GPIO_PIN_2,0u)
#define OLED_RST_Set() GPIO_WriteBit(GPIOA,GPIO_PIN_2,1u)
#define OLED_DC_Clr() GPIO_WriteBit(GPIOA,GPIO_PIN_3,0u)
#define OLED_DC_Set() GPIO_WriteBit(GPIOA,GPIO_PIN_3,1u)
#define OLED_CS_Clr() GPIO_WriteBit(GPIOA,GPIO_PIN_4,0u)
#define OLED_CS_Set() GPIO_WriteBit(GPIOA,GPIO_PIN_4,1u)
#define OLED_BLK_Clr() GPIO_WriteBit(GPIOA,GPIO_PIN_5,0u)
#define OLED_BLK_Set() GPIO_WriteBit(GPIOA,GPIO_PIN_5,1u)
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_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)
{
;
}
}
完成后用杜邦线屏幕和开发板,烧录程序。一次成功。
原作者:灵动MM32 MCU 家星