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

/** 

  ****************************************************************************** 

  * @file      i2c simu.c 

  * @brief     simulation function 

  * @CPU       STM32F051 

  * @compiler  Keil uVision V4.74 

  * @author    MetalSeed 

  * @copyright WSHHB 

  * @version   V1.0.0 

  * @date      18-Sept-2014 

  * @modifydate20-Sept-2014 

  ****************************************************************************** 

  * @attention 

  */  

  

#include "boardAPI.h"  

#include "i2cSimu.h"  

#include "delay.h"  

#include "uart.h"  

  

GPIO_InitTypeDef        GPIO_InitStructure;    

     

    

/** 

  * @brief  IIC Init 

  * @param  A: 

  * @retval None 

  */  

void IIC_Init(void)  

{                          

    RCC_AHBPeriphClockCmd(  RCC_AHBPeriph_GPIOF, ENABLE );    

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;  

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT ;   //í?íìê?3?  

  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;  

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  

    GPIO_Init(GPIOF, &GPIO_InitStructure);  

    GPIO_SetBits(GPIOF,GPIO_Pin_6|GPIO_Pin_7);  //PB10,PB11 ê?3???  

}  

  

/** 

  * @brief  Set SDA Pin as Output Mode 

  * @retval None 

  */  

void SDA_OUT()    

{    

  GPIO_StructInit(&GPIO_InitStructure);    

  GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_7;    

  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_OUT;    

  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;    

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     

  GPIO_Init(GPIOF, &GPIO_InitStructure);    

}    

  

/** 

  * @brief  Set SDA Pin as Input Mode 

  * @retval None 

  */  

void SDA_IN()    

{    

  GPIO_StructInit(&GPIO_InitStructure);    

  GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_7;    

  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IN;  

  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_NOPULL;// !!!  

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     

  GPIO_Init(GPIOF, &GPIO_InitStructure);    

}   

  

/** 

  * @brief  read input voltage from SDA pin 

  * @retval None 

  */  

BYTE SDA_READ()  

{  

  return GPIO_ReadInputDataBit(GPIOF, GPIO_Pin_7);  

}  

  

/** 

  * @brief  output high form SDA pin 

  * @retval None 

  */  

void IIC_SDA_1()  

{  

  GPIO_SetBits(GPIOF, GPIO_Pin_7);  

}  

  

/** 

  * @brief  output low form SDA pin 

  * @retval None 

  */  

void IIC_SDA_0()  

{  

  GPIO_ResetBits(GPIOF, GPIO_Pin_7);  

}  

  

/** 

  * @brief  output high form SCL pin 

  * @retval None 

  */  

void IIC_SCL_1()  

{  

GPIO_SetBits(GPIOF, GPIO_Pin_6);  

}  

  

/** 

  * @brief  output LOW form SCL pin 

  * @retval None 

  */  

void IIC_SCL_0()  

{  

GPIO_ResetBits(GPIOF, GPIO_Pin_6);    

}  

  

  

/** 

* @brief  Simulate IIC conmunication :Create Start signal 

  * @retval None 

  */  

void IIC_Start(void)  

{  

    SDA_OUT();     //sda output  

    IIC_SDA_1();            

    IIC_SCL_1();  

    delayus(4);  

    IIC_SDA_0();   //START:when CLK is high,DATA change form high to low   

    delayus(4);  

    IIC_SCL_0();   //hold scl line, prepare to transmit data  

}       

  

/** 

  * @brief  Simulate IIC conmunication : Create Stop signal 

  * @retval None 

  */  

void IIC_Stop(void)  

{  

    SDA_OUT();    //sda output mode   

    IIC_SCL_0();  

    IIC_SDA_0();  //STOP:when CLK is high DATA change form low to high  

    delayus(4);  

    IIC_SCL_1();   

    IIC_SDA_1();  //indicate transmit over  

    delayus(4);                               

}  

  

/** 

* @brief  Simulate IIC conmunication : wait for target device's ACK 

* @retval ACK (0) : receive success 

* @retval NACK(1) : receive unsuccess 

  */  

BYTE IIC_Wait_Ack(void)  

{  

    BYTE ucErrTime = 0;  

    SDA_IN();      //set as input mode  

    IIC_SDA_1();  

  delayus(1);        

    IIC_SCL_1();  

  delayus(1);      

    while(SDA_READ())  

    {  

        ucErrTime++;  

        if(ucErrTime > 250)  

        {  

            IIC_Stop();  

            return 1;  

        }  

    }  

    IIC_SCL_0(); //release scl line  

    return 0;    

}   

  

/** 

  * @brief  Simulate IIC conmunication : make an ACK 

  * @retval None 

  */  

void IIC_Ack(void)  

{  

    IIC_SCL_0();  

    SDA_OUT();  

    IIC_SDA_0();  

    delayus(2);  

    IIC_SCL_1();  

    delayus(2);  

    IIC_SCL_0();  

}  

  

/** 

  * @brief  Simulate IIC conmunication : don't make an ACK 

  * @retval None 

  */  

void IIC_NAck(void)  

{  

    IIC_SCL_0();  

    SDA_OUT();  

    IIC_SDA_1();  

    delayus(2);  

    IIC_SCL_1();  

    delayus(2);  

    IIC_SCL_0();  

}                                          

  

  

/** 

  * @brief  Simulate IIC conmunication : Transmit one byte Data 

  * @param  txd: data to be transmit 

  * @retval None 

  */  

void IIC_Send_Byte(BYTE txd)  

{                          

  BYTE i;     

  SDA_OUT();          

  IIC_SCL_0();//push down scl  to start transmit data  

  for(i = 0; i < 8; ++i)  

  {                

    if(txd & 0x80)  

    {  

      IIC_SDA_1();  

    }  

    else  

    {  

      IIC_SDA_0();  

    }  

    txd <<= 1;        

    delayus(2);     

    IIC_SCL_1();  

    delayus(2);   

    IIC_SCL_0();      

    delayus(2);  

  }    

}       

  

//?á1??×??ú£?ack=1ê±£?·¢?íACK£?ack=0£?·¢?ínACK     

/** 

  * @brief  Simulate IIC conmunication : Receive one byte Data 

  * @param  ack: Whether transmit ACK 

  * @retval the data have been receive 

  */  

BYTE IIC_Read_Byte(unsigned char ack)  

{  

    unsigned char i, res = 0;  

    SDA_IN();               //SDA input mode  

  for(i = 0; i < 8; ++i )  

    {  

    IIC_SCL_0();   

    delayus(2);  

    IIC_SCL_1();  

    res <<= 1;  

    if(SDA_READ())  

    {  

      res++;   

    }        

        delayus(1);   

  }                    

  if (!ack)  

  {  

    IIC_NAck();//make NACK  

  }  

  else  

  {  

    IIC_Ack(); //make ACK  

  }  

  return res;  

}  

  

  

/*JUST SOME TEST FUNTION DEMO*/  

BYTE ReadData()  

{                   

    BYTE temp=0;                                                                                   

  IIC_Start();    

      

  IIC_Send_Byte(0x80);   

    IIC_Wait_Ack();   

    

  IIC_Send_Byte(0xf5);   

    IIC_Wait_Ack();       

      

  IIC_Start();               

    IIC_Send_Byte(0XA1);   

    IIC_Wait_Ack();    

    

  temp=IIC_Read_Byte(0);             

  IIC_Stop();  

    return temp;  

}  

  

void WriteData(BYTE DataToWrite)  

{                                                                                              

  IIC_Start();    

  IIC_Send_Byte(0x80);  

  if( IIC_Wait_Ack() == 0)  

  {  

     printf("Recieve ACK \n");  

  }      

    

  IIC_Send_Byte(0xf5);  

    IIC_Wait_Ack();                                                          

      

  IIC_Send_Byte( DataToWrite );   

    IIC_Wait_Ack();                      

    

  IIC_Stop();  

    delayms(10);       

}  


關(guān)鍵字:STM32  模擬I2C  STM32F051 引用地址:STM32 模擬I2C (STM32F051)

上一篇:STM32模擬IIC讀寫24CXX
下一篇:STM32F407和STM32F051主從I2C通信方法

推薦閱讀

1. 首先修改u-boot源碼的兩個(gè)文件 1.1 將u-boot根目錄下的config.mk, #DBGFLAGS= -g 改成:DBGFLAGS= -gdwarf-2 1.2 將 u-boot/cpu/arm920t/config.mk 中的 PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) 改成: PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,$(ca...
在電路設(shè)計(jì)過(guò)程中,應(yīng)用工程師往往會(huì)忽視印刷電路板(PCB)的布局。通常遇到的問(wèn)題是,電路的原理圖是正確的,但并不起作用,或僅以低性能運(yùn)行。在本篇博文中,我將向您介紹如何正確地布設(shè)運(yùn)算放大器的電路板以確保其功能、性能和穩(wěn)健性。 我與一名實(shí)習(xí)生最近在利用增益為2V/V、負(fù)荷為10k?、電源電壓為+/-15V的非反相配置OPA191運(yùn)算放大器進(jìn)行設(shè)計(jì)。...
1 引言液位測(cè)控儀是屬于智能化儀器儀表的一種(指采用了微處理器的儀器儀表),其發(fā)展始于70年代[1]。它是一種集測(cè)量與控制于一體的智能化產(chǎn)品,適用于石油化工、冶金、電力、制藥、環(huán)保等行業(yè)中各種介質(zhì)的液位測(cè)量。本儀器主要針對(duì)罐體內(nèi)液體進(jìn)行測(cè)量并能計(jì)算其重量,適用于對(duì)各種液態(tài)物質(zhì)進(jìn)行靜態(tài)和動(dòng)態(tài)測(cè)量與監(jiān)控,并具有超限報(bào)警和主-從站模式聯(lián)網(wǎng)...

史海拾趣

問(wèn)答坊 | AI 解惑

a static DSP system

using standard algorithms in a system in which data objects are created at design time 【ABSTRACT】 The TMS320 DSP Algorithm Standard is part of TI\'s eXpressDSP (XDAIS) technology initiative. It allows system designers to e ...…

查看全部問(wèn)答∨

2009第五屆NI測(cè)控前沿技術(shù)論壇即將拉開(kāi)帷幕

尊敬的工程師: 感謝您對(duì)NI長(zhǎng)期以來(lái)的支持,2009第五屆NI測(cè)控前沿技術(shù)論壇即將拉開(kāi)帷幕。 作為廣受好評(píng)的年度盛會(huì),您不僅可以通過(guò)資深工程師的講解了解最新前沿技術(shù),還可以親自投票選擇自己感興趣的專題內(nèi)容。 NI誠(chéng)邀您參與第五屆測(cè)控前沿技 ...…

查看全部問(wèn)答∨

關(guān)于DB的問(wèn)題

1.新建了一個(gè)共享數(shù)據(jù)塊DB1     在DB1下新建了兩個(gè)整型變量a1,a2 2.然后在OB1主程序中調(diào)用"EQU-I"指令     想在EQU_I的兩個(gè)輸入端IN1和IN2中添加全局變量,但是S7-300不認(rèn)(輸入的a1,a2是紅色的)   為什么? ...…

查看全部問(wèn)答∨

為什么vxworks啟動(dòng)后會(huì)打印出一些雜亂的信息呢?

各位高手,我把我的應(yīng)用程序編譯進(jìn)內(nèi)核后,啟動(dòng)vxworks后,經(jīng)常會(huì)打印出一些雜亂的信息,甚至丟失了命令提示符,比如下面這個(gè)(我在RAM里建立了文件系統(tǒng),并建立臨時(shí)文件,最后銷毀): ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] ]]]]]]]]]]]] ...…

查看全部問(wèn)答∨

分享嵌入式Linux關(guān)鍵開(kāi)發(fā)技術(shù)(6.12深圳)

Linux除作為服務(wù)器操作系統(tǒng)外,其最成功的便是在嵌入式領(lǐng)域的應(yīng)用,原因當(dāng)然是免費(fèi)、開(kāi)源、支持軟件多、呼擁者眾,這樣嵌入式產(chǎn)品成本會(huì)低。很多人預(yù)測(cè),嵌入式Linux預(yù)計(jì)將占嵌入式操作系統(tǒng)的50%以上份額,非常重要。目前嵌入式Linux憑借著自身 ...…

查看全部問(wèn)答∨

matlab R2007a 的Instrument Control Toolbox

請(qǐng)問(wèn)誰(shuí)有matlab 7.1.0(R2007a) 的Instrument Control Toolbox軟件?。刻峁┫?。謝啦~…

查看全部問(wèn)答∨

VB.NET編寫WINCE下十六進(jìn)制的串口通訊

你好,我是一個(gè)初學(xué)者,由于工作的原因,我要開(kāi)發(fā)一個(gè)在wince5.0下的和串口(rs-232)進(jìn)行通訊的軟件,想用VB.net來(lái)開(kāi)發(fā).    請(qǐng)問(wèn)該如何和實(shí)現(xiàn),我的要求很簡(jiǎn)單:    以16進(jìn)制發(fā)送命令,如“3E 30 38 35 32 38 0D" 然后返回十 ...…

查看全部問(wèn)答∨

關(guān)于藍(lán)牙文件傳輸?shù)膯?wèn)題~!

為什么我用put發(fā)送文件是正常的,而用get的時(shí)候就出錯(cuò)~!請(qǐng)教各位高手obex的get函數(shù)怎么用給出流程和前提條件就可以.…

查看全部問(wèn)答∨

隆重推出STM32F的LCD320*240驅(qū)動(dòng)程序

本驅(qū)動(dòng)程序針對(duì)與SED1335兼容控制芯片的LCD320240液晶顯示模塊,實(shí)現(xiàn)了輸出8*16、16*24、16*32三種字號(hào)的數(shù)字及英文符號(hào),輸出16*16、24*24、32*32三種字號(hào)的漢字,還能按照起點(diǎn)終點(diǎn)坐標(biāo)畫直線和斜線。#include "lcd.h" #includ ...…

查看全部問(wèn)答∨

今天是什么時(shí)候要交作品的?

本帖最后由 paulhyde 于 2014-9-15 03:59 編輯 快結(jié)束了,啥時(shí)候交作品呢?  …

查看全部問(wèn)答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦

最新單片機(jī)文章
電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 交口县| 冀州市| 剑阁县| 红安县| 乐亭县| 阳城县| 崇信县| 红桥区| 沂源县| 盘山县| 牙克石市| 都安| 浦县| 安平县| 青冈县| 永昌县| 车险| 淄博市| 定边县| 贺兰县| 新绛县| 林西县| 郎溪县| 临夏市| 江永县| 上饶市| 陕西省| 武定县| 兰西县| 皋兰县| 聂拉木县| 丘北县| 三门县| 望江县| 铅山县| 郴州市| 石泉县| 县级市| 沙湾县| 杭州市| 绥阳县|