前面我介绍了MM32G0001A6T的ADC功能,为了后续测试ADC功能、显示测试结果,先准备下显示方面的处理。对于SOP8封装的MM32G0001A6T单片机,2和4是电源引脚,1和5是烧录用引脚,不敢碰,所以可供使用的引脚有8、7、6、3。为了驱动OLED显示,准备使用6和3引脚,使用软件模拟方式驱动IIC的OLED。
驱动OLED需要的资源有点大,MM32G0001A6T有16KFlash,2KRAM,问题应该不大。程序主要处理代码如下:
#define _MAIN_C_
#include "platform.h"
#include "main.h"
void GPIO_Configure(uint16_t PINn) {
GPIO_InitTypeDef GPIO_InitStruct;
RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE);
GPIO_StructInit(&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = PINn;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_WriteBit(GPIOA, PINn, Bit_SET);
}
void GPIO_IO_Toggle(GPIO_TypeDef *GPIOn, uint16_t PINn) {
if (Bit_RESET == GPIO_ReadOutputDataBit(GPIOn, PINn)) {
GPIO_SetBits(GPIOn, PINn);
} else {
GPIO_ResetBits(GPIOn, PINn);
}
}
void GPIO_LED_Toggle_Sample(uint16_t PINn) {
GPIO_Configure(PINn);
while (1) {
GPIO_IO_Toggle(GPIOA, PINn);
PLATFORM_DelayMS(500);
}
}
int main(void) {
// 初始化四通滴答器
PLATFORM_Init();
// 初始化OLED用接口
OLED_Init();
// 清除屏幕
OLED_Clear(0);
// 测试:显示信息
GUI_ShowString(0, 0, (uint8_t*)"Start test ...", 8, 1);
GUI_ShowString(0, 8, (uint8_t*)"Start test ...", 16, 1);
while (1) {
//GPIO_LED_Toggle_Sample(GPIO_Pin_3);
PLATFORM_DelayMS(500);
}
}程序中使用了USART2的TX作为串口输出用,主要是为了打印调试信息。这里没有使用USART1,是因为考虑到ADC测试,以及USART1占用了下载口,为了避免出现无法再次下载,必须避开SWCLK和SWDIO两个引脚。
显示效果:

串口输出信息:
代码打包(不包括库及驱动文件,你可以自行去灵动微官网下载):
我要赚赏金
