娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年12月17日(星期二)

正在發生

2019年12月17日 | stm8的IIC庫的使用

發布者:zhihua 來源: eefocus關鍵字:stm8  IIC庫  低功耗 手機看文章 掃描二維碼
隨時隨地手機看文章

一.前言

stm8是一款低功耗的MCU芯片,它具備stm32庫函數和資源豐富的優勢。也同時具有價格便宜,低功耗的特點。在一些項目中,能起到很好的作用。下面我介紹一下stm8的IIC硬件庫函數驅動代碼及實現。


二.IIC基本操作

iic基本操作分為讀操作和寫操作,這兩個操作就可以對設備進行一些基本的操作了。還要知道設備的地址就ok了,具體的IIC時序大家可以上網看看。


三.實現代碼


1.先要啟動IIC的時鐘,保證可以正常工作。 CLK_PeripheralClockConfig (CLK_Peripheral_I2C1,ENABLE);//開啟IIC1時鐘


2.再對IIC進行初始化的操作

void Init(void)

      {

        I2C_DeInit(I2C1);
       I2C_Init(I2C1,IICSPEED, host_address, I2C_Mode_I2C,I2C_DutyCycle_2, I2C_Ack_Enable, I2C_AcknowledgedAddress_7bit);
       I2C_Cmd(I2C1,ENABLE);
      }


可以用來對IIC的通信時間和主機地址以及從機地址等參數進行設置。IICSPEED最好不要超過400K,會造成通信的不穩定,最好在100K左右就可以了,host_address是主機的地址,可以自己設定。


3.IIC的寫操作

/****************************************************************************
* 名稱:I2C_WriteByte(uint8_t addr,uint8_t data)
* 功能:進行IIC的寫操作。
* 入口參數: uint8_t addr 寄存器的地址
* uint8_t data 寫入的數據 
* 出口參數:無
* 說明:對觸摸屏的寄存器進行寫入操作,變量都是16進制
****************************************************************************/

void I2C_WriteByte(uint8_t addr,uint8_t data)
{

while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY)); //等待空閑

I2C_GenerateSTART(I2C1, ENABLE);//開啟I2C1
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));/*EV5,主模式*/

I2C_Send7bitAddress(I2C1, I2C1_WRITE_ADDRESS7, I2C_Direction_Transmitter);//器件地址 -- 默認0xD0
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));

I2C_SendData(I2C1, addr);//寄存器地址
while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));

I2C_SendData(I2C1, data);//發送數據
while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
I2C_AcknowledgeConfig(I2C1,ENABLE);

I2C_GenerateSTOP(I2C1, ENABLE);//關閉I2C1總線
}


上面的代碼是IIC的寫函數,可以對設備的寄存器進行寫操作。I2C1_WRITE_ADDRESS7代表設備IIC的寫入地址,根據器件地址的不同改變就可以。每一步都是調用的IIC的庫函數,如果進行單步調試,地址寄存器都對的話,就可以看見每操作一步從機都會有一個應答信號。


4.IIC的讀操作

/****************************************************************************
* 名稱:uint8_t I2C_ReadByte(uint8_t addr)
* 功能:進行IIC的讀操作。
* 入口參數: uint8_t addr 寄存器的地址 
* 出口參數: uint8_t i 保存讀到的數據并作為參數返回
* 說明:對觸摸屏的寄存器進行讀出操作,變量都是16進制,IIC寫操作要
先寫寄存器再進行讀寄存器的操作,否則會失敗
****************************************************************************/
uint8_t I2C_ReadByte(uint8_t addr)
{
uint8_t i;

while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY));

I2C_GenerateSTART(I2C1, ENABLE);//開啟I2C1
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));/*EV5,主模式*/

I2C_Send7bitAddress(I2C1, I2C1_WRITE_ADDRESS7, I2C_Direction_Transmitter);//器件地址 -- 默認0xD0
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));

I2C_SendData(I2C1, addr);//寄存器地址
while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));


I2C_GenerateSTART(I2C1, ENABLE);//開啟I2C1
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));/*EV5,主模式*/

I2C_Send7bitAddress(I2C1, I2C1_READ_ADDRESS7, I2C_Direction_Receiver);//器件地址 -- 默認0xD1
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));


while (!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_RECEIVED));

i=I2C_ReceiveData(I2C1);//讀取數據

I2C_AcknowledgeConfig(I2C1,DISABLE);

I2C_GenerateSTOP(I2C1, ENABLE);//關閉I2C1總線


return i;

}


IIC的讀操作,跟寫操作不同的是.讀操作首先要先進行寫操作,寫一下要讀的寄存器地址,當然地址也要發送寫入的地址。然后再寫入器件讀取地址,要讀取的寄存器地址,把數據讀取出來。I2C1_READ_ADDRESS7為器件的讀取地址,寫操作和讀操作兩個操作的應答變量也不一樣,這個要注意一下。


四.總結

硬件IIC的庫函數實現通信,代碼實現量小,調通以后的穩定性高,速度快。缺點是可能會占一部分內存空間,調試不方便,因為都是用的庫函數,不容易找問題。

關鍵字:stm8  IIC庫  低功耗 引用地址:stm8的IIC庫的使用

上一篇:STM8的GPIO各模式
下一篇:DS18B20時序分析詳細步驟

推薦閱讀

DRAM市場受美中貿易戰、英特爾中央處理器(CPU)缺貨比預期嚴重等負面因素干擾,市況冷颼颼。通路商透露,本季合約價跌幅高達一成,已較原預期高,近期下游降低備貨,甚至反手出清庫存,導致賣壓加重,明年合約價首季跌幅恐持續擴大,預估價格跌勢恐至明年第2季中旬才會趨緩。 DRAM產業再次陷入景氣下滑循環,南亞科、華邦電、威剛、創見等業者首當其沖。...
簡介本文介紹STM8L系列如何使用timer2產生定時中斷。實驗平臺編譯軟件:IAR for STM8 1.42.2硬件平臺:stm8l101f3p6開發板仿真器:ST-LINK庫函數版本:STM8L_STMTouch_Lib_V1.1.0實驗步驟1、工程中添加自己寫的定時器2的驅動1)寫一個驅動GUA_Timer2.c (存放在工程的USER文件夾中)//**************************************************************...
IT之家 12 月 17 日消息 在 iOS 14.3/iPadOS 14.3 正式版更新幾天后,蘋果今天凌晨發布了 iOS 14.4/iPadOS 14.4 開發者預覽版 Beta 1,版本號 18D5030e 。  iOS 14.4 開發者預覽版 Beta 1 已通過設置應用進行 OTA 更新。像往常一樣,如果更新沒有立即出現下載,請繼續檢查。  iOS 14.3 正式版在本周早些時候面向公...
意法半導體升級NanoEdge? AI Studio,簡化物聯網產品和工業設備的機器學習軟件開發 新算法能更好地預測設備異常和未來行為特征新功能配合意法半導體開發板,讓工業傳感器數據采集和管理功能更好用改進用戶界面,降低機器學習軟件實現難度,即使沒有數據學技能的嵌入式開發者也能輕松應對2021年12月17日,中國—— 服務多重電子應用領域的全球半導體領...

史海拾趣

小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 张掖市| 邵阳县| 台东市| 郎溪县| 河间市| 灵山县| 玉门市| 永春县| 夹江县| 卢龙县| 铜山县| 亳州市| 日照市| 德保县| 西吉县| 关岭| 阿荣旗| 灯塔市| 永康市| 海安县| 勃利县| 响水县| 大丰市| 垣曲县| 门头沟区| 临西县| 廊坊市| 察雅县| 万宁市| 黄石市| 临海市| 东港市| 于田县| 华坪县| 江油市| 南康市| 鹤岗市| 伊春市| 绿春县| 益阳市| 珲春市|