色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32入門學(xué)習(xí)筆記之EEPROM存儲(chǔ)實(shí)驗(yàn)4

jf_78858299 ? 來源:滑小稽筆記 ? 作者:電子技術(shù)園地 ? 2023-02-16 14:22 ? 次閱讀

(2)創(chuàng)建at24cxx.c文件,并輸入以下代碼。

/*********************************************************************************************************
                EEPROM    驅(qū)    動(dòng)    程    序
*********************************************************************************************************/
#include "at24cxx.h"
#include "delay.h"
/***************************************************
Name    :IIC_Start
Function  :IIC起始信號(hào)
Paramater  :None
Return    :None
***************************************************/
void IIC_Start()
{
  GPIOB->CRL &= 0x0FFFFFFF ;                                      //PB7推挽輸出
  GPIOB->CRL |= 0x30000000 ;
  IIC_SDA = 1 ;
  IIC_SCL = 1 ;
  delay_us( 4 ) ;
  IIC_SDA = 0 ;
  delay_us( 4 ) ;
  IIC_SCL = 0 ;
}
/***************************************************
Name    :IIC_Stop
Function  :IIC停止信號(hào)
Paramater  :None
Return    :None
***************************************************/
void IIC_Stop()
{
  GPIOB->CRL &= 0x0FFFFFFF ;                                      //PB7推挽輸出
  GPIOB->CRL |= 0x30000000 ;
  IIC_SCL = 0 ;
  IIC_SDA = 0 ;
   delay_us( 4 ) ;
  IIC_SCL = 1 ;
  IIC_SDA = 1 ;
  delay_us( 4 ) ;
}
/***************************************************
Name    :IIC_Wait_Ack
Function  :IIC等待應(yīng)答
Paramater  :None
Return    :
      0:成功
      1:失敗
***************************************************/
void IIC_Wait_Ack()
{
  u8 Time = 0 ;
  GPIOB->CRL &= 0x0FFFFFFF ;
  GPIOB->CRL |= 0x80000000 ;
  IIC_SDA = 1 ;
  delay_us( 1 ) ;
  IIC_SCL = 1 ;
  delay_us( 1 ) ;
  while( IIC_SDA_READ )
  {
    Time ++ ;
    if( Time>250 )
    {
      IIC_Stop() ;
      break ;
    }
  }
  IIC_SCL = 0 ;
}
/***************************************************
Name    :IIC_Send_Byte
Function  :IIC發(fā)送一個(gè)字節(jié)
Paramater  :
      ack:應(yīng)答使能
        0:不應(yīng)答
        1:應(yīng)答
Return    :None
***************************************************/
void IIC_Send_Byte( u8 Byte )
{
  u8 i;
  GPIOB->CRL &= 0x0FFFFFFF ;                                      //PB7推挽輸出
  GPIOB->CRL |= 0x30000000 ;
  IIC_SCL = 0 ;
  for( i=0; i<8; i++ )
  {
    if( ( Byte&0x80 )==0x80 )
      IIC_SDA = 1 ;
    else
      IIC_SDA = 0 ;
    Byte <<= 1 ;
    delay_us( 2 ) ;
    IIC_SCL = 1 ;
    delay_us( 2 ) ;
    IIC_SCL = 0 ;
    delay_us( 2 ) ;
  }
}
/***************************************************
Name    :IIC_Read_Byte
Function  :IIC讀取一個(gè)字節(jié)
Paramater  :
      ack:應(yīng)答使能
        0:不應(yīng)答
        1:應(yīng)答
Return    :None
***************************************************/
u8 IIC_Read_Byte( u8 Ack )
{
  u8 i,Byte=0;
  GPIOB->CRL &= 0x0FFFFFFF ;
  GPIOB->CRL |= 0x80000000 ;
  for( i=0; i<8; i++ )
  {
    IIC_SCL = 0 ;
    delay_us( 2 ) ;
    IIC_SCL = 1 ;
    Byte <<= 1 ;
    if( IIC_SDA_READ )
      Byte |= 0x01 ;
    delay_us( 1 ) ;
  }
  IIC_SCL = 0 ;
  GPIOB->CRL &= 0x0FFFFFFF ;                                      //PB7推挽輸出
  GPIOB->CRL |= 0x30000000 ;
  IIC_SDA = 1 - Ack ;
  delay_us( 2 ) ;
  IIC_SCL = 1 ;
  delay_us( 2 ) ;
  IIC_SCL = 0 ;
  return Byte ;
}
/***************************************************
Name    :AT24Cxx_Write_Data
Function  :寫入1個(gè)數(shù)據(jù)
Paramater  :
      Address:地址
      Data:數(shù)據(jù)
Return    :讀到的數(shù)據(jù)
***************************************************/
void AT24Cxx_Write_Data( u16 Address, u8 Data )
{                                                      
  IIC_Start() ;
  IIC_Send_Byte( 0xA0|( Address/256 )<<1 ) ;                              //發(fā)送器件地址,寫數(shù)據(jù)
  IIC_Wait_Ack() ;
  IIC_Send_Byte( Address%256 ) ;                                    //發(fā)送低地址
  IIC_Wait_Ack() ;
  IIC_Send_Byte( Data ) ;                                        //發(fā)送字節(jié)
  IIC_Wait_Ack() ;
  IIC_Stop() ;                                            //產(chǎn)生一個(gè)停止條件
  delay_ms( 10 ) ;                                          //EEPROM的寫入速度比較慢
}
/***************************************************
Name    :AT24Cxx_Write_nData
Function  :寫入n個(gè)數(shù)據(jù)
Paramater  :
      Address:地址
      *Buffer:數(shù)據(jù)緩存
      Len:數(shù)據(jù)長度
Return    :None
***************************************************/
void AT24Cxx_Write_nData( u16 Address, u8 *Buffer, u16 Len ) 
{
  u16 i ;
  for( i=0; iAPB2ENR |= 1<<3 ;                                        //先使能外設(shè)GPIOB時(shí)鐘
  GPIOB->CRL &= 0x00FFFFFF ;                                      //PB6和PB7推挽輸出
  GPIOB->CRL |= 0x33000000 ;
  GPIOB->ODR |= 3<<6 ;                                        //PB6和PB7輸出高
  while( AT24Cxx_Check()==0 ) ;
}

(3)創(chuàng)建1.c文件并輸入以下代碼。

#include "sys.h"
#include "delay.h"
#include "usart1.h"
#include "lcd.h"
#include "at24cxx.h"


u8 TEXT_Buffer[] = "STM32F103 IIC Test" ;
int main()
{
  u8 datatemp[ 17 ] ;
  STM32_Clock_Init( 9 ) ;                                        //STM32時(shí)鐘初始化
  SysTick_Init( 72 ) ;                                        //SysTick初始化
  USART1_Init( 72, 115200 ) ;                                      //初始化串口1波特率115200
  LCD_Init() ;                                            //LCD初始化
  AT24Cxx_Init() ;                                          //AT24C初始化
   POINT_COLOR = RED ;                                          //設(shè)置字體為紅色
  AT24Cxx_Write_nData( 0, TEXT_Buffer, 18 ) ;                              //從第0個(gè)地址處開始寫入
  AT24Cxx_Read_nData( 0, datatemp, 18 ) ;                                //從第0個(gè)地址處開始讀出
  LCD_ShowString( 0, 0, datatemp ) ;                                  //顯示讀到的字符串
  while( 1 )
  {

  }
}

16.4.2 硬件IIC控制

注:由于STM32的硬件IIC總是容易卡死(這也是為什么網(wǎng)絡(luò)上幾乎沒有硬件IIC通訊的例子的原因),所以這里采用了ST內(nèi)部提供的通訊機(jī)制來保證IIC的正常使用。

(1)創(chuàng)建at24cxx.h文件并輸入以下代碼。

/*********************************************************************************************************
                EEPROM    驅(qū)    動(dòng)    文    件
*********************************************************************************************************/
#ifndef _AT24Cxx_H_
#define _AT24Cxx_H_


#include "sys.h"
/*********************************************************************************************************
                    函    數(shù)    列    表
*********************************************************************************************************/
void AT24Cxx_Init( void ) ;                                        //AT24C初始化
void IIC_Write_Data( u8 Address, u8 Data ) ;                              //寫入1個(gè)數(shù)據(jù)
void AT24Cxx_Write_nData( u16 Address, u8 *Buffer, u16 Len ) ;                      //寫入n個(gè)數(shù)據(jù)
void AT24Cxx_Read_Data( u16 Address, u8 *Data ) ;                            //讀取1個(gè)數(shù)據(jù)
void AT24Cxx_Read_nData( u16 Address, u8 *Buffer, u16 Len ) ;                      //讀取n個(gè)數(shù)據(jù)


#endif
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7513

    瀏覽量

    163988
  • EEPROM
    +關(guān)注

    關(guān)注

    9

    文章

    1022

    瀏覽量

    81687
  • 存儲(chǔ)芯片
    +關(guān)注

    關(guān)注

    11

    文章

    897

    瀏覽量

    43181
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32學(xué)習(xí)筆記(初學(xué)者快速入門)

    STM32學(xué)習(xí)筆記(初學(xué)者快速入門)資料來自網(wǎng)絡(luò)資源
    發(fā)表于 06-11 20:23

    小白高手都適用,STM32學(xué)習(xí)教程(入門合集、自學(xué)筆記和例程)

    、安全特性等方面對(duì)STM32進(jìn)行全面的剖析;第4章主要介紹開發(fā)工具;第5章則引導(dǎo)讀者針對(duì)STM32的外設(shè)進(jìn)行一系列的基礎(chǔ)實(shí)驗(yàn)設(shè)計(jì);第6章通過10篇高級(jí)應(yīng)用文章介紹
    發(fā)表于 04-10 14:56

    CubeMX入門STM32 HAL庫的學(xué)習(xí)筆記

    STM32CubeMX是ST官方開發(fā)的一款很好用的軟件,主要用于STM32系列單片機(jī)的硬件驅(qū)動(dòng)層的配置。網(wǎng)上也有一些關(guān)于STM32CubeMX的相關(guān)教程,對(duì)它的相關(guān)操作進(jìn)行說明。從今天起,小柯希望能將自己從CubeMX
    發(fā)表于 08-17 06:55

    STM32入門學(xué)習(xí)筆記 精選資料分享

    STM32入門學(xué)習(xí)筆記本文為筆者入門學(xué)習(xí)過程的記錄,只是零散的記錄了一些個(gè)人不太懂得,覺得需要經(jīng)
    發(fā)表于 08-24 07:56

    EEPROM開機(jī)記憶存儲(chǔ)實(shí)驗(yàn)

    EEPROM開機(jī)記憶存儲(chǔ)實(shí)驗(yàn)
    發(fā)表于 07-13 18:10 ?25次下載

    STM32各模塊學(xué)習(xí)筆記

    ..........................................................4 STM32筆記STM3
    發(fā)表于 11-30 03:32 ?3169次閱讀

    單片機(jī)學(xué)習(xí)EEPROM-IIC實(shí)驗(yàn)的資料合集免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是單片機(jī)學(xué)習(xí)EEPROM-IIC實(shí)驗(yàn)的資料合集免費(fèi)下載。
    發(fā)表于 07-21 08:00 ?1次下載
    單片機(jī)<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>之</b><b class='flag-5'>EEPROM</b>-IIC<b class='flag-5'>實(shí)驗(yàn)</b>的資料合集免費(fèi)下載

    STM32F4 I2C-EEPROM實(shí)驗(yàn)例程

    STM32F4 I2C-EEPROM實(shí)驗(yàn)例程(嵌入式開發(fā)專業(yè)課程)-STM32F4 I2C-EEPROM
    發(fā)表于 07-30 16:02 ?19次下載
    <b class='flag-5'>STM32F4</b> I2C-<b class='flag-5'>EEPROM</b><b class='flag-5'>實(shí)驗(yàn)</b>例程

    STM32學(xué)習(xí)筆記1——軟硬件基礎(chǔ)keil5編程與GPIO開發(fā)

    STM32學(xué)習(xí)筆記1——軟硬件基礎(chǔ)keil5編程與GPIO開發(fā)
    發(fā)表于 11-30 12:36 ?4次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>1——軟硬件基礎(chǔ)<b class='flag-5'>之</b>keil5編程與GPIO開發(fā)

    STM32學(xué)習(xí)I2C協(xié)議(讀寫EEPROM

    關(guān)于STM32學(xué)習(xí)分享第七章 I2C協(xié)議(讀寫EEPROM)文章目錄關(guān)于STM32學(xué)習(xí)分享前言二、代碼1.i2c.c2.i2c.h3.mai
    發(fā)表于 11-30 15:21 ?32次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>之</b>I2C協(xié)議(讀寫<b class='flag-5'>EEPROM</b>)

    STM32入門學(xué)習(xí)筆記EEPROM存儲(chǔ)實(shí)驗(yàn)1

    EEPROM(Electrically Erasable Programmable read only memory),稱為帶電可擦除可編程只讀存儲(chǔ)器,是一種可以斷電保存數(shù)據(jù)的存儲(chǔ)芯片,EEP
    的頭像 發(fā)表于 02-16 14:22 ?2411次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>入門</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b><b class='flag-5'>之</b><b class='flag-5'>EEPROM</b><b class='flag-5'>存儲(chǔ)</b><b class='flag-5'>實(shí)驗(yàn)</b>1

    STM32入門學(xué)習(xí)筆記EEPROM存儲(chǔ)實(shí)驗(yàn)2

    EEPROM(Electrically Erasable Programmable read only memory),稱為帶電可擦除可編程只讀存儲(chǔ)器,是一種可以斷電保存數(shù)據(jù)的存儲(chǔ)芯片,EEP
    的頭像 發(fā)表于 02-16 14:22 ?960次閱讀

    STM32入門學(xué)習(xí)筆記EEPROM存儲(chǔ)實(shí)驗(yàn)3

    EEPROM(Electrically Erasable Programmable read only memory),稱為帶電可擦除可編程只讀存儲(chǔ)器,是一種可以斷電保存數(shù)據(jù)的存儲(chǔ)芯片,EEP
    的頭像 發(fā)表于 02-16 14:22 ?1141次閱讀

    STM32入門學(xué)習(xí)筆記EEPROM存儲(chǔ)實(shí)驗(yàn)5

    EEPROM(Electrically Erasable Programmable read only memory),稱為帶電可擦除可編程只讀存儲(chǔ)器,是一種可以斷電保存數(shù)據(jù)的存儲(chǔ)芯片,EEP
    的頭像 發(fā)表于 02-16 14:23 ?630次閱讀

    EEPROM存儲(chǔ)實(shí)驗(yàn)

    可以在電腦上或?qū)S迷O(shè)備上擦除已有信息,重新編程,一般用在即插即用設(shè)備中,這種存儲(chǔ)芯片可以通過高于普通電壓的作用來擦除或重寫,EEPROM芯片一般用在需要頻繁存儲(chǔ)數(shù)據(jù),但是數(shù)據(jù)量不大的場合,本實(shí)
    的頭像 發(fā)表于 03-01 14:54 ?9585次閱讀
    <b class='flag-5'>EEPROM</b><b class='flag-5'>存儲(chǔ)</b><b class='flag-5'>實(shí)驗(yàn)</b>
    主站蜘蛛池模板: 强上轮流内射高NP男男| 日韩欧无码一区二区三区免费不卡 | 久久国产亚洲电影天堂| 老头xxx| 三叶草未满十八岁| 亚洲精品无码成人AAA片| 51久久夜色精品国产| 亚洲精品免播放器在线观看| 午夜一区欧美二区高清三区| 在线国产a不卡| 国产XXXXXX农村野外| 久久免费精品一区二区| 甜性涩爱在线播放| 24小时日本高清免费看| 国产精品欧美亚洲| 免费国产久久啪久久爱| 亚洲 无码 在线 专区| xxx日本高清视频hd| 持田香织abc| 美女脱衣服搞鸡| 亚洲欧洲精品A片久久99| 丰满人妻按磨HD| 欧美日韩另类在线专区| 中文在线免费看视频| 国产在线观看免费观看| 肉动漫h黄动漫日本免费观看| 佐山爱痴汉theav| 久久精品国产亚洲AV热无遮挡| 国产 欧美 亚洲 日韩视频| 免费看国产曰批40分钟| 一边啪啪的一边呻吟声口述| 国产女合集第六部| 无码人妻精品国产婷婷| 动漫在线观看免费肉肉| 日本xxxxxxx| 成人亚洲精品| 日本高清天码一区在线播放| 99精品国产自在自线| 免费观看美女的网站| 87.6在线收听| 蜜芽手机在线观看|