xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

資源簡(jiǎn)介

PCA9685的驅(qū)動(dòng)

資源截圖

代碼片段和文件信息



#include?“stm32f10x.h“
#include?“bsp_i2c_gpio.h“
#include?“stdio.h“
#include?“usart.h“
/*?定義I2C總線連接的GPIO端口?用戶只需要修改下面4行代碼即可任意改變SCL和SDA的引腳?*/
#define?GPIO_PORT_I2C GPIOB /*?GPIO端口?*/
#define?RCC_I2C_PORT? RCC_APB2Periph_GPIOB /*?GPIO端口時(shí)鐘?*/
#define?I2C_SCL_PIN GPIO_Pin_9 /*?連接到SCL時(shí)鐘線的GPIO?*/
#define?I2C_SDA_PIN GPIO_Pin_8 /*?連接到SDA數(shù)據(jù)線的GPIO?*/

/*?定義讀寫(xiě)SCL和SDA的宏,已增加代碼的可移植性和可閱讀性?*/
#if?1 /*?條件編譯:?1?選擇GPIO的庫(kù)函數(shù)實(shí)現(xiàn)IO讀寫(xiě)?*/
#define?I2C_SCL_1()??GPIO_SetBits(GPIO_PORT_I2C?I2C_SCL_PIN) /*?SCL?=?1?*/
#define?I2C_SCL_0()??GPIO_ResetBits(GPIO_PORT_I2C?I2C_SCL_PIN) /*?SCL?=?0?*/

#define?I2C_SDA_1()??GPIO_SetBits(GPIO_PORT_I2C?I2C_SDA_PIN) /*?SDA?=?1?*/
#define?I2C_SDA_0()??GPIO_ResetBits(GPIO_PORT_I2C?I2C_SDA_PIN) /*?SDA?=?0?*/

#define?I2C_SDA_READ()??GPIO_ReadInputDataBit(GPIO_PORT_I2C?I2C_SDA_PIN) /*?讀SDA口線狀態(tài)?*/
#else /*?這個(gè)分支選擇直接寄存器操作實(shí)現(xiàn)IO讀寫(xiě)?*/
????/* 注意:如下寫(xiě)法,在IAR最高級(jí)別優(yōu)化時(shí),會(huì)被編譯器錯(cuò)誤優(yōu)化?*/
#define?I2C_SCL_1()??GPIO_PORT_I2C->BSRR?=?I2C_SCL_PIN /*?SCL?=?1?*/
#define?I2C_SCL_0()??GPIO_PORT_I2C->BRR?=?I2C_SCL_PIN /*?SCL?=?0?*/

#define?I2C_SDA_1()??GPIO_PORT_I2C->BSRR?=?I2C_SDA_PIN /*?SDA?=?1?*/
#define?I2C_SDA_0()??GPIO_PORT_I2C->BRR?=?I2C_SDA_PIN /*?SDA?=?0?*/

#define?I2C_SDA_READ()??((GPIO_PORT_I2C->IDR?&?I2C_SDA_PIN)?!=?0) /*?讀SDA口線狀態(tài)?*/
#endif



/*
*********************************************************************************************************
* 函?數(shù)?名:?i2c_Delay
* 功能說(shuō)明:?I2C總線位延遲,最快400KHz
* 形????參:無(wú)
* 返?回?值:?無(wú)
*********************************************************************************************************
*/
static?void?i2c_Delay(void)
{
uint8_t?i;

/* 
? 下面的時(shí)間是通過(guò)安富萊AX-Pro邏輯分析儀測(cè)試得到的。
CPU主頻72MHz時(shí),在內(nèi)部Flash運(yùn)行?MDK工程不優(yōu)化
循環(huán)次數(shù)為10時(shí),SCL頻率?=?205KHz?
循環(huán)次數(shù)為7時(shí),SCL頻率?=?347KHz,?SCL高電平時(shí)間1.5us,SCL低電平時(shí)間2.87us?
? 循環(huán)次數(shù)為5時(shí),SCL頻率?=?421KHz,?SCL高電平時(shí)間1.25us,SCL低電平時(shí)間2.375us?
????????
????IAR工程編譯效率高,不能設(shè)置為7
*/
for?(i?=?0;?i?}

/*
*********************************************************************************************************
* 函?數(shù)?名:?i2c_Start
* 功能說(shuō)明:?CPU發(fā)起I2C總線啟動(dòng)信號(hào)
* 形????參:無(wú)
* 返?回?值:?無(wú)
*********************************************************************************************************
*/
void?i2c_Start(void)
{
/*?當(dāng)SCL高電平時(shí),SDA出現(xiàn)一個(gè)下跳沿表示I2C總線啟動(dòng)信號(hào)?*/
I2C_SDA_1();
I2C_SCL_1();
i2c_Delay();
I2C_SDA_0();
i2c_Delay();
I2C_SCL_0();
i2c_Delay();
}

/*
*********************************************************************************************************
* 函?數(shù)?名:?i2c_Start
* 功能說(shuō)明:?CPU發(fā)起I2C總線停止信號(hào)
* 形????參:無(wú)
* 返?回?值:?無(wú)
*********************************************************************************************************
*/
void?i2c_Stop(void)
{
/*?當(dāng)SCL高電平時(shí),SDA出現(xiàn)一個(gè)上跳沿表示I2C總線停止信號(hào)?*/
I2C_SDA_0();
I2C_SCL_1();
i2c_Delay();
I2C_SDA_1();
}

/*
*********************************************************************************************************
* 函?數(shù)?名:?i2c_SendByte
* 功能說(shuō)明:?CPU向I2C總線設(shè)備發(fā)送8bit數(shù)據(jù)

?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----

?????文件???????5968??2016-08-15?15:42??pca9685_reg.h

?????文件??????10760??2016-08-15?14:59??bsp_i2c_gpio.c

?????文件????????588??2016-08-15?14:52??bsp_i2c_gpio.h

?????文件???????8397??2016-09-29?09:55??pca9685.c

?????文件????????551??2016-09-29?09:55??pca9685.h

?????文件????????409??2016-09-29?10:06??main.c

-----------?---------??----------?-----??----

????????????????26673????????????????????6


評(píng)論

共有 條評(píng)論

相關(guān)資源