古人云:工欲善其事,必先利其器
一、下载Pack安装包和例程
安装包下载连接: https://www.mindmotion.com.cn/products/mm32mcu/value_line/mm32g_value/mm32g0001/
例程这个两个随便下载一个就可以,然后往下翻
我是用的是Keil就下载这个Pack安装包
解压安装这个MM32G001_DFP.1.0.1.pack就可以了
二、新建工程
解压咱第一步下载的例程,打开文件夹后把Device文件夹复制到咱自己的项目文件夹下,随便打开一个例程把里面的mm32l0130_it.c mm32l0130_it.h platform.c
platform.h也复制到自己的工程文件夹下
使用keil新建工程这就不讲了,默认大家都会
进入工程点击魔术棒,选择MM32G0001A1TC芯片
然后进入到这个界面把USE_STDPERIPH_DRIVER填进去,把头文件也添加进去
三、添加OLED 文件
这个OLED驱动自己就在网上找找把
#define OLED_W_SCL(x) GPIO_WriteBit(GPIOA, GPIO_Pin_0, (BitAction)(x))
#define OLED_W_SDA(x) GPIO_WriteBit(GPIOA, GPIO_Pin_1, (BitAction)(x))
/* Private variables **************************************************************************************************/
/* Private functions **************************************************************************************************/
/***********************************************************************************************************************
* @brief
* @note none
* @param none
* @retval none
*********************************************************************************************************************/
void i2c_init(void)
{
RCC_APB1PeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_Init(GPIOA, &GPIO_InitStructure);
OLED_W_SCL(1);
OLED_W_SDA(1);
}
/*
i2c开始
SCL高电平期间,SDA从高电平切换到低电平
*/
void i2c_start(void)
{
OLED_W_SDA(1);
OLED_W_SCL(1);
OLED_W_SDA(0);
OLED_W_SCL(0);
}
/*
i2c停止
SCL高电平期间,SDA从低电平切换到高电平
*/
void i2c_stop(void)
{
OLED_W_SDA(0);
OLED_W_SCL(1);
OLED_W_SDA(1);
}
void i2c_sendbyte( uint8_t byte )
{
uint8_t i = 0;
for( i = 0; i < 8; i++ )
{
OLED_W_SCL( 0 );
byte & 0x80 ? OLED_W_SDA( 1 ):OLED_W_SDA( 0 );
OLED_W_SCL( 1 );
OLED_W_SCL( 0 );
byte <<= 1;
}
OLED_W_SCL(1);
OLED_W_SCL(0);
}
void i2c_command(uint8_t cmd)
{
i2c_start();
i2c_sendbyte(0x78); //从机地址
i2c_sendbyte(0x00); //写命令
i2c_sendbyte(cmd);
i2c_stop();
}
void i2c_writedata(uint8_t Data)
{
i2c_start();
i2c_sendbyte(0x78); //从机地址
i2c_sendbyte(0x40); //写数据
i2c_sendbyte(Data);
i2c_stop();
}
void i2c_Ack(void)
{
OLED_W_SDA(0); /* CPU驱动SDA = 0 */
Delay_us(10);
OLED_W_SCL(1); /* CPU产生1个时钟 */
Delay_us(10);
OLED_W_SCL(0);
Delay_us(10);
OLED_W_SCL(1); /* CPU释放SDA总线 */
}
void i2c_NAck(void)
{
OLED_W_SDA(1); /* CPU驱动SDA = 1 */
Delay_us(10);
OLED_W_SCL(1); ; /* CPU产生1个时钟 */
Delay_us(10);
OLED_W_SCL(0);
Delay_us(10);
}
四、硬件连接
OLED-------->mm32g001
gnd -------->gnd
vcc -------->3v3
scl -------->PA0
sda -------->PA1
完结