demo任務(wù):利用復(fù)旦微FM33LG048外設(shè)I2C驅(qū)動(dòng)OLED顯示
demo目的:通過(guò)demo熟悉復(fù)旦微的I2C、GPIO外設(shè),幫助復(fù)旦微的新學(xué)習(xí)者快速了解復(fù)旦微庫(kù)函數(shù)
demo設(shè)備:MCU——FM33LG048;OLED——四針腳OLED,型號(hào):JMD096D.
移植教程:
#include "main.h"
#include "fm33_assert.h"
#include "OLED.h"
/*********************************************主函數(shù)*******************************************/
int main(void)
{
/* Initialize FL Driver Library */
FL_Init();
/* Configure the system clock */
MF_Clock_Init();
OLED_Init(); // 初始化OLED
OLED_ShowString(2,1,"hello"); //顯示hello字符串
}
FL_Init();在復(fù)旦微官方例程中已經(jīng)給出,未修改任何代碼,故這里不再贅述。
MF_Clock_Init();主要用于初始化各外設(shè)以及配置系統(tǒng)時(shí)鐘,需要注意,為了方便移植OLED,將MF_Clock_Init()中GPIO初始化相關(guān)代碼移動(dòng)到OLED.c文件中。
demo所用函數(shù)如下,直觀展示了與SMT32的對(duì)比,方便新手快速?gòu)腟MT32入手復(fù)旦微FM33。
/******************************************************復(fù)旦微GPIO初始化************************************************************************************/
void MF_I2C_MASTER_Init(void)void MF_I2C_MASTER_Init(void)
{
FL_GPIO_InitTypeDef GPIO_InitStruct;
FL_I2C_MasterMode_InitTypeDef I2C_InitStruct;
/* PA11 I2C_SCL */
GPIO_InitStruct.pin = FL_GPIO_PIN_11;
GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.pull = FL_DISABLE;
GPIO_InitStruct.remapPin = FL_DISABLE;
GPIO_InitStruct.analogSwitch = FL_DISABLE;
FL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* PA12 I2C_SDA */
GPIO_InitStruct.pin = FL_GPIO_PIN_12;
GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.pull = FL_DISABLE;
GPIO_InitStruct.remapPin = FL_DISABLE;
GPIO_InitStruct.analogSwitch = FL_DISABLE;
FL_GPIO_Init(GPIOA, &GPIO_InitStruct);
I2C_InitStruct.clockSource = FL_CMU_I2C_CLK_SOURCE_RCHF;
I2C_InitStruct.baudRate = 100000;
FL_I2C_MasterMode_Init(I2C, &I2C_InitStruct); }
以下是STM32的GPIO初始化
/*****************************************************SMT32 GPIO初始化**********************************************/
void OLED_I2C_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_Init(GPIOB, &GPIO_InitStructure);
OLED_W_SCL(1);
OLED_W_SDA(1);
}
需要注意,在復(fù)旦微庫(kù)函數(shù)中,沒(méi)有STM32的GPIO_WriteBit(*GPIOx,GPIO_Pin_x,Value)對(duì)應(yīng)的庫(kù)函數(shù),需要自己封裝。
以下給出兩者代碼不同之處
/**************************************STM32向特定引腳寫入0,1數(shù)據(jù)********************************************/
#define OLED_W_SCL(x) GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(x))
#define OLED_W_SDA(x) GPIO_WriteBit(GPIOB, GPIO_Pin_9, (BitAction)(x))
BitAction為枚舉類型,只能是0或1
/*************************************復(fù)旦微向特定引腳寫入0,1數(shù)據(jù)*********************************************/
void OLED_W_SCL(uint8_t x)
{ if(x==0)
{ FL_GPIO_ResetOutputPin(GPIOA,FL_GPIO_PIN_11); }
else
{ FL_GPIO_SetOutputPin(GPIOA,FL_GPIO_PIN_11); } }
void OLED_W_SDA(uint8_t x)
{ if(x==0)
{ FL_GPIO_ResetOutputPin(GPIOA,FL_GPIO_PIN_12); }
else
{ FL_GPIO_SetOutputPin(GPIOA,FL_GPIO_PIN_12); }}
完整代碼在附件。
其他部分復(fù)旦微FM33與SMT32高度類似,不再展示。
-
OLED
+關(guān)注
關(guān)注
120文章
6286瀏覽量
228118 -
STM32
+關(guān)注
關(guān)注
2293文章
11032瀏覽量
365158 -
I2C
+關(guān)注
關(guān)注
28文章
1541瀏覽量
127906 -
GPIO
+關(guān)注
關(guān)注
16文章
1280瀏覽量
54131
發(fā)布評(píng)論請(qǐng)先 登錄
昂科燒錄器支持FuDanWei復(fù)旦微電子的低功耗微控制器FM33LC043N

復(fù)旦微低功耗MCU代理供應(yīng)
基于復(fù)旦微MCU+NFC Reader+NFC Tag雙通道標(biāo)簽一站式解決方案

復(fù)旦微低功耗mcuFM33A0xx系列代理供應(yīng)
基于RT-Thread的I2C(軟件) 實(shí)踐 | 技術(shù)集結(jié)

嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-I2C設(shè)備驅(qū)動(dòng)之Linux下的I2C驅(qū)動(dòng)簡(jiǎn)介
飛凌嵌入式ElfBoard ELF 1板卡-I2C設(shè)備驅(qū)動(dòng)之Linux下的I2C驅(qū)動(dòng)簡(jiǎn)介
HTR33xx具有中斷功能的16位I2C和SMBus IO擴(kuò)展器中文手冊(cè)
STM32學(xué)習(xí)筆記_I2C詳解(可下載)
EE-204:Blackfin處理器SCCB軟件接口,用于配置I2C從器件

高效電梯語(yǔ)音播報(bào):基于復(fù)旦微FM33LF016的DAC音頻方案

復(fù)旦微MCU 行業(yè)應(yīng)用 | FM33LF0xx系列MCU在焊機(jī)行業(yè)應(yīng)用案例

復(fù)旦微榮獲ISO26262:2018功能安全ASIL B產(chǎn)品認(rèn)證證書

RISC V的I2C操作
昂科燒錄器支持FuDanWei復(fù)旦微電子的低功耗微控制器FM33FR024

評(píng)論