資源簡介
使用STM32CubeMX創建基礎工程,在此基礎上添加SSD1963驅動和XPT2046觸摸驅動。為了方便初學者理解,在硬件驅動層上加入了顯示中間層,實現硬件驅動分塊。硬件連接和參數配置可以通過打開.ioc工程文件查看。
代碼片段和文件信息
#include?“24cxx.h“?
#include?“delay.h“? ?
////////////////////////////////////////////////////////////////////////////////// ?
//本程序只供學習使用,未經作者許可,不得用于其它任何用途
//ALIENTEK?STM32F407開發板
//24CXX?驅動代碼 ???
//正點原子@ALIENTEK
//技術論壇:www.openedv.com
//創建日期:2014/5/6
//版本:V1.0
//版權所有,盜版必究。
//Copyright(C)?廣州市星翼電子科技有限公司?2014-2024
//All?rights?reserved ??
//////////////////////////////////////////////////////////////////////////////////?
//初始化IIC接口
void?AT24CXX_Init(void)
{
IIC_Init();//IIC初始化
}
//在AT24CXX指定地址讀出一個數據
//ReadAddr:開始讀數的地址??
//返回值??:讀到的數據
u8?AT24CXX_ReadOneByte(u16?ReadAddr)
{ ??
u8?temp=0; ?? ???? ?
????IIC_Start();??
if(EE_TYPE>AT24C16)
{
IIC_Send_Byte(0XA0); ???//發送寫命令
IIC_Wait_Ack();
IIC_Send_Byte(ReadAddr>>8);//發送高地址 ????
}else?IIC_Send_Byte(0XA0+((ReadAddr/256)<<1));???//發送器件地址0XA0寫數據? ???
IIC_Wait_Ack();?
????IIC_Send_Byte(ReadAddr%256);???//發送低地址
IIC_Wait_Ack(); ????
IIC_Start();?? ? ???
IIC_Send_Byte(0XA1);???????????//進入接收模式 ???
IIC_Wait_Ack(); ?
????temp=IIC_Read_Byte(0); ???
????IIC_Stop();//產生一個停止條件 ????
return?temp;
}
//在AT24CXX指定地址寫入一個數據
//WriteAddr??:寫入數據的目的地址????
//DataToWrite:要寫入的數據
void?AT24CXX_WriteOneByte(u16?WriteAddru8?DataToWrite)
{ ??? ?? ???? ?
????IIC_Start();??
if(EE_TYPE>AT24C16)
{
IIC_Send_Byte(0XA0); ????//發送寫命令
IIC_Wait_Ack();
IIC_Send_Byte(WriteAddr>>8);//發送高地址 ??
}else?IIC_Send_Byte(0XA0+((WriteAddr/256)<<1));???//發送器件地址0XA0寫數據? ?
IIC_Wait_Ack(); ???
????IIC_Send_Byte(WriteAddr%256);???//發送低地址
IIC_Wait_Ack();? ? ?? ???
IIC_Send_Byte(DataToWrite);?????//發送字節 ???
IIC_Wait_Ack();?? ???? ???
????IIC_Stop();//產生一個停止條件?
delay_ms(10); ?
}
//在AT24CXX里面的指定地址開始寫入長度為Len的數據
//該函數用于寫入16bit或者32bit的數據.
//WriteAddr??:開始寫入的地址??
//DataToWrite:數據數組首地址
//Len????????:要寫入數據的長度24
void?AT24CXX_WriteLenByte(u16?WriteAddru32?DataToWriteu8?Len)
{??
u8?t;
for(t=0;t {
AT24CXX_WriteOneByte(WriteAddr+t(DataToWrite>>(8*t))&0xff);
} ????
}
//在AT24CXX里面的指定地址開始讀出長度為Len的數據
//該函數用于讀出16bit或者32bit的數據.
//ReadAddr???:開始讀出的地址?
//返回值?????:數據
//Len????????:要讀出數據的長度24
u32?AT24CXX_ReadLenByte(u16?ReadAddru8?Len)
{??
u8?t;
u32?temp=0;
for(t=0;t {
temp<<=8;
temp+=AT24CXX_ReadOneByte(ReadAddr+Len-t-1);? ? ???
}
return?temp; ????
}
//檢查AT24CXX是否正常
//這里用了24XX的最后一個地址(255)來存儲標志字.
//如果用其他24C系列這個地址要修改
//返回1:檢測失敗
//返回0:檢測成功
u8?AT24CXX_Check(void)
{
u8?temp;
temp=AT24CXX_ReadOneByte(255);//避免每次開機都寫AT24CXX ???
if(temp==0X55)return?0; ???
else//排除第一次初始化的情況
{
AT24CXX_WriteOneByte(2550X55);
????temp=AT24CXX_ReadOneByte(255); ??
if(temp==0X55)return?0;
}
return?1; ??
}
//在AT24CXX里面的指定地址開始讀出指定個數的數據
//ReadAddr?:開始讀出的地址?對24c02為0~255
//pBuffer??:數據數組首地址
//NumToRead:要讀出數據的個數
void?AT24CXX_Read(u16?ReadAddru8?*pBufferu16?NumToRead)
{
while(NumToRead)
{
*pBuffer++=AT2
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????6370??2018-11-28?09:50??SSD1963-DISPLAY\.mxproject
?????文件???????3818??2014-10-04?17:25??SSD1963-DISPLAY\BSP\24CXX\24cxx.c
?????文件???????1485??2014-05-06?18:30??SSD1963-DISPLAY\BSP\24CXX\24cxx.h
?????文件????????278??2018-11-12?16:56??SSD1963-DISPLAY\BSP\BSP_BEEP\bsp_beep.c
?????文件????????139??2018-11-12?16:56??SSD1963-DISPLAY\BSP\BSP_BEEP\bsp_beep.h
?????文件??????20518??2018-11-29?16:11??SSD1963-DISPLAY\BSP\SSD1963\SSD1963.c
?????文件???????2004??2018-11-29?16:11??SSD1963-DISPLAY\BSP\SSD1963\SSD1963.h
?????文件???????2783??2018-11-30?11:43??SSD1963-DISPLAY\BSP\XPT2046\XPT2046.c
?????文件????????803??2018-11-30?10:42??SSD1963-DISPLAY\BSP\XPT2046\XPT2046.h
?????文件???????4163??2018-11-28?09:50??SSD1963-DISPLAY\Core\Inc\main.h
?????文件??????17333??2018-11-28?09:50??SSD1963-DISPLAY\Core\Inc\stm32f4xx_hal_conf.h
?????文件???????3027??2018-11-28?09:50??SSD1963-DISPLAY\Core\Inc\stm32f4xx_it.h
?????文件???????3570??2018-11-28?09:50??SSD1963-DISPLAY\Core\Inc\stm32_assert.h
?????文件??????13701??2018-11-30?12:11??SSD1963-DISPLAY\Core\Src\main.c
?????文件???????7451??2018-11-28?09:50??SSD1963-DISPLAY\Core\Src\stm32f4xx_hal_msp.c
?????文件???????6132??2018-11-28?09:50??SSD1963-DISPLAY\Core\Src\stm32f4xx_it.c
?????文件??????28181??2018-11-12?13:38??SSD1963-DISPLAY\Core\Src\system_stm32f4xx.c
?????文件?????719923??2018-11-12?13:38??SSD1963-DISPLAY\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f401xc.h
?????文件?????719923??2018-11-12?13:38??SSD1963-DISPLAY\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f401xe.h
?????文件????1228777??2018-11-12?13:38??SSD1963-DISPLAY\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f405xx.h
?????文件????1344524??2018-11-12?13:38??SSD1963-DISPLAY\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f407xx.h
?????文件?????606160??2018-11-12?13:38??SSD1963-DISPLAY\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f410cx.h
?????文件?????606469??2018-11-12?13:38??SSD1963-DISPLAY\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f410rx.h
?????文件?????601407??2018-11-12?13:38??SSD1963-DISPLAY\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f410tx.h
?????文件?????723418??2018-11-12?13:38??SSD1963-DISPLAY\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f411xe.h
?????文件????1167059??2018-11-12?13:38??SSD1963-DISPLAY\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f412cx.h
?????文件????1253447??2018-11-12?13:38??SSD1963-DISPLAY\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f412rx.h
?????文件????1253447??2018-11-12?13:38??SSD1963-DISPLAY\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f412vx.h
?????文件????1253519??2018-11-12?13:38??SSD1963-DISPLAY\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f412zx.h
?????文件????1307927??2018-11-12?13:38??SSD1963-DISPLAY\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f413xx.h
............此處省略809個文件信息
- 上一篇:FANUC數控系統PMC編程技術
- 下一篇:總鉆風攝像頭K60代碼
評論
共有 條評論