




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、本文檔內(nèi)容為在 STM32條件下的24C02讀寫(xiě)程序。全文共分四部分,第一部分24C02的C程序,第二部分為 24C02的.h程序,第三部分為端口與時(shí)鐘配置函數(shù),第四部分為主 函數(shù)。下面分別進(jìn)行介紹。第一部分:24C02的.c函數(shù)*/#i nclude stm32f10x.h#in elude system_c on fig.h#i nclude 24C02.hu8 savedata10=10,9,8,7,6,5,4,3,2,1;/* Fun cti on Name:AT24C02_SDA_IO_SET(uchar io_set)* Description : SDA 方向控制* In put
2、: None* Output: None* Return: None*/void AT24C02_SDA_IO_SET(u nsig ned char io_set)GPIO_I ni tTypeDef GPIO_I nitStructure;if(io_set)GPIO_I nitStructure.GPIO_Pin = GPIO_Pin_7 ;/SDA設(shè)置為輸出GPIO_I nitStructure.GPIO_Speed = GPIO_Speed_5OMH z;GPIO_I ni tStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_I nit(GPIO
3、B, & GPIO_I nitStructure);elseGPIO_I nitStructure.GPIO_Pin = GPIO_Pin_7 ;/SDA設(shè)置為輸入GPIO_I nitStructure.GPIO_Speed = GPIO_Speed_50MH z;GPIO_I ni tStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_I nit(GPIOB, & GPIO_I nitStructure);/* Fun cti on Name: delay2* Description :延時(shí)函數(shù)* In put: None* Output: No
4、ne參考* Return: No ne*/void delay2(u8 x)u8 i;for(i=0;ix;i+);/* Fun cti on Name: delay2* Description :延時(shí)函數(shù)* In put: None* Output: None* Return: No ne*/void delay_ nop(void)uint8_t i=10; 延時(shí) 1.5uswhile(i-); /* Fun ction Name: 24C02ni t()* Description :初始化函數(shù)* In put: None* Output: None* Return: No ne*/voi
5、d l2C_i nit(void)SCL=1SCL_H;delay_ no p();SDA=1SDA_H;delay_ no p();/* Fun ction Name: I2C_start()* Description :開(kāi)始信號(hào)* In put: None* Output: None* Return: No ne*/void l2C_start()SDA_H;delay_ no p();SCL_H;delay_ no p();SDA_L;delay_ no p();SCL_L;delay_ no p();/* Fun ction Name : I2C_stop()* Description
6、 :開(kāi)始信號(hào)* In put: None* Output: None* Return: No ne*/void I2C_stop()SDA_L;delay_ no p();SCL_H;delay_ no p();SDA_H;delay_ no p();/* Fun ction Name : l2C_write_bit()* Description :開(kāi)始信號(hào)* In put: None* Output: None* Return: No ne*/void l2C_write_bit(i nt j)int i,temp,temp1;temp=j;AT24C02_SDA_IO_SET(1); 發(fā)送
7、數(shù)據(jù)for(i=0;i8;i+)temp仁temp&0x80;高位在前相與temp=temp1;SCL_L;時(shí)鐘線設(shè)為低delay_ no p();if(temp1=0x80)發(fā)送數(shù)據(jù)到 SDA線上SDA_H;delay_ nop();elseSDA_L;delay_ nop();SCL_H;時(shí)鐘線設(shè)為高,開(kāi)始傳輸數(shù)據(jù)delay_ no p();SCL_L;/ 一個(gè)字節(jié)發(fā)送完成delay_ no p();SDA_H;delay_ no p();/* Descripti on* In put* Output* Return:讀取一個(gè)字節(jié)數(shù)據(jù):No ne:No ne:No ne* Fun cti
8、on Name:I2C_read_bit()* /u8 I2C_read_bit() u8 i,j,k=0;SCL_L; delay_ no p();SDA_H;delay_ no p();AT24C02_SDA_IO_SET(0);/SDA 設(shè)置為輸入 for(i=0;i8;i+)delay_ nop();SCL_H;delay_ nop();if(GPIO_Readl nputDataBit(GPIOB,GPIO_Pin_7)=1) j=1;elsej=0;k=(k1)|j;SCL_L;delay_ nop();AT24C02_SDA_IO_SET(1);/SDA 設(shè)置為輸出 delay_
9、 no p();return(k);/* Fun ction Name : I2C_reply()* Description :讀取應(yīng)答信號(hào)* In put: None* Output: None* Return: No ne* /void I2C_reply()u16 i=0;AT24C02_SDA_IO_SET(0);/SDA 設(shè)置為輸入SCL_H;delay_ no p();while(GPIO_Readl nputDataBit(GPIOB,GPIO_Pin_7)=1)&(i5000) i+;SCL_L;delay_ no p();AT24C02_SDA_IO_SET(1);/SDA
10、設(shè)置為輸出/* * Fun ction Name : I2C_write_addr()* Description :指定地址寫(xiě)* In put: None* Output: None* Return: No ne*/void l2C_write_addr(u8 addr,u8 data)l2C_start(); 開(kāi)始信號(hào)l2C_write_bit(0xa0); 發(fā)送寫(xiě)命令l2C_reply(); 等待應(yīng)答l2C_write_bit(addr); 發(fā)送寫(xiě)地址l2C_reply(); 等待應(yīng)答l2C_write_bit(data); 發(fā)送寫(xiě)數(shù)據(jù)l2C_reply(); 等待應(yīng)答l2C_stop()
11、;停止信號(hào)delay2(250);/* Fun cti on Name* Descripti on* In put* Output* Return:I2C_read_addr()指定地址讀:No ne:No ne:No ne* /intI2C_read_addr(i nt addr)int i=0;I2C_start();/ 開(kāi)始信號(hào)l2C_write_bit(0xa0);發(fā)送寫(xiě)命令因?yàn)橐葘?xiě)入要讀的地址 l2C_reply(); 等待應(yīng)答l2C_write_bit(addr); 發(fā)送讀地址 l2C_reply(); 等待應(yīng)答I2C_start();/ 開(kāi)始信號(hào)l2C_write_bit(0x
12、a1); 發(fā)送讀命令 l2C_reply(); 等待應(yīng)答i=I2C_read_bit();l2C_stop();停止信號(hào)delay2(250);return(i);第二部分:24C02的h函數(shù)#defi ne SCL_HGPI0_SetBits(GPI0B,GPI0_Pin_6)#defi ne SCL_LGPI0_ResetBits(GPI0B,GPI0_Pin_6)#defi ne SDA_H#defi ne SDA_LGPI0_SetBits(GPI0B,GPI0_Pin_7)GPI0_ResetBits(GPI0B,GPI0_Pin_7)#defi ne Write_able GPI0
13、_ResetBits(GPI0B,GPI0_Pin_5)/24C02 寫(xiě)使能控制引腳 void AT24C02_SDA_IO_SET(u nsig ned char io_set);void delay2(u8 x);void delay_ nop(void);void I2C_i nit(void);void I2C_start();void I2C_stop();void I2C_write_bit(i nt j);u8 I2C_read_bit();void I2C_reply();void I2C_write_addr(u8 addr,u8 data);intI2C_read_addr
14、(i nt addr);第三部分:端口與時(shí)鐘配置函數(shù)由于我們使用的是 PB6作為時(shí)鐘線,PB7作為數(shù)據(jù)線,所以端口配置 PB6,PB7就可以了。F面是端口配置函數(shù)void GPIO_Co nfiguratio n( void) GPIO_I ni tTypeDef GPIO_I nitStructure;/*24C02相關(guān)配置*/GPIO_I ni tStructure.GPIO_Pin = GPIO_P in_ 6|GPIO_Pin_7 ;GPIO_I nitStructure.GPIO_Speed = GPIO_Speed_50MH z;GPIO_I ni tStructure.GPIO_
15、Mode = GPIO_Mode_Out_PP;GPIO_I nit(GPIOB, & GPIO_I nitStructure);時(shí)鐘配置函數(shù)如下所示:void RCC_Co nfiguratio n( void)/* RCC system reset(for debug purpose) */RCC_DeI nit();/* En able HSE */RCC_HSECo nfig(RCC_HSE_ON);/* Wait till HSE is ready */HSEStartUpStatus = RCC_WaitForHSEStartUp();if(HSEStartUpStatus = S
16、UCCESS)/* En able Prefetch Buffer */FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_E nable);/* Flash 2 wait state */FLASH_SetLate ncy(FLASH_Late ncy_2);/* HCLK = SYSCLK */RCC_HCLKCo nfig(RCC_SYSCLK_Div1);/* PCLK2 = HCLK */RCC_PCLK2Co nfig(RCC_HCLK_Div1);/* PCLK1 = HCLK/2 */RCC_PCLK1Co nfig(RCC_HCLK_Di
17、v2);/* PLLCLK = 8MHz * 9 = 72 MHz */RCC_PLLCo nfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);/* En able PLL */RCC_PLLCmd(ENABLE);/* Wait till PLL is ready */ while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) = RESET) /* Select PLL as system clock source */RCC_SYSCLKCo nfig(RCC_SYSCLKSource_PLLCLK);/* Wait till PLL is used as system clock source */ while(RCC_GetSYSCLKSource() != 0x08)/* GPIOB clock enable */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);/* En able AFIO cl
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 混凝土底板施工方案
- 連續(xù)剛構(gòu)施工方案
- 寧夏攔水壩施工方案
- TSICA 007-2024 數(shù)字旋變轉(zhuǎn)換器芯片的技術(shù)規(guī)范
- TSHCH 01-2024 SLAM測(cè)量技術(shù)標(biāo)準(zhǔn)
- 二零二五年度幼兒園藝術(shù)教育合作項(xiàng)目協(xié)議
- 2025年度茶葉加工廠租賃及茶藝培訓(xùn)服務(wù)合同
- 2025年度跨境電商合伙人公司運(yùn)營(yíng)合作協(xié)議書(shū)
- 二零二五年度酒店客房餐飲服務(wù)滿意度調(diào)查合同
- 二零二五年度布展演出項(xiàng)目安全風(fēng)險(xiǎn)評(píng)估及整改合同
- 2025年初中主題班會(huì)課件:好習(xí)慣成就好人生
- 學(xué)校教職工代表大會(huì)全套會(huì)議會(huì)務(wù)資料匯編
- 中華人民共和國(guó)監(jiān)察法宣貫培訓(xùn)
- 新教科版一年級(jí)科學(xué)下冊(cè)第一單元第6課《哪個(gè)流動(dòng)得快》課件
- 2025年山東傳媒職業(yè)學(xué)院高職單招高職單招英語(yǔ)2016-2024歷年頻考點(diǎn)試題含答案解析
- 2025年春新教科版物理八年級(jí)下冊(cè)課件 第10章 流體的力現(xiàn)象 1 在流體中運(yùn)動(dòng)
- 屋面種植土垂直施工方案
- 2025年新人教PEP版英語(yǔ)三年級(jí)下冊(cè)全冊(cè)課時(shí)練習(xí)
- 《愛(ài)耳日課件》課件
- 《中醫(yī)基礎(chǔ)理論》課件-中醫(yī)學(xué)理論體系的基本特點(diǎn)-整體觀念
- 全國(guó)職業(yè)院校技能大賽高職組(商務(wù)數(shù)據(jù)分析賽項(xiàng))備賽試題及答案
評(píng)論
0/150
提交評(píng)論