資源簡介
基于MDK Keil5編程,STM32F103驅動PCA9685控制器,16路舵機驅動模塊,IIC通信.

代碼片段和文件信息
#include?“iic1.h“
void?I2C1_Init(void)
{
?/***I2C端口定義***/
GPIO_InitTypeDef??GPIO_InitStructure;//定義GPIO結構體
??I2C_InitTypeDef??I2C_InitStruct;?//I2C結構體初始化
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB?|?RCC_APB2Periph_AFIO?ENABLE);//打開GPIOB??打開串口
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1ENABLE);//I2C1的時鐘時能
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7;//設置GPIO的管腳
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//設置GPIO的管腳最大頻率
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_OD;//開漏輸出復用功能
GPIO_Init(GPIOB&GPIO_InitStructure);//GPIO設置初始?
I2C_DeInit(I2C1);//對I2C進行寄存器初始化
I2C_InitStruct.I2C_Mode?=?I2C_Mode_I2C;?//設置I2C模式為I2C模式
I2C_InitStruct.I2C_DutyCycle?=?I2C_DutyCycle_2;//I2C占空比?
I2C_InitStruct.I2C_OwnAddress1?=0x30;//設置stm32自己的地址?
I2C_InitStruct.I2C_Ack?=?I2C_Ack_Enable;//允許I2C應答?
I2C_InitStruct.I2C_AcknowledgedAddress?=?I2C_AcknowledgedAddress_7bit;//應答7位地址?
I2C_InitStruct.I2C_ClockSpeed?=?3200;//設置數據傳輸速度為HZ?
I2C_Cmd(I2C1?ENABLE);//允許I2C1?
I2C_Init(I2C1?&I2C_InitStruct);//I2C1初始化???
I2C_AcknowledgeConfig(I2C1ENABLE);//允許一字節一應答模式
}
void?I2C1_Write_Byte(u8?addressu8?data)
{
while(I2C_GetFlagStatus(I2C1?I2C_FLAG_BUSY));?//檢測總線是否忙?就是看?SCL?或SDA是否為?低?
I2C_AcknowledgeConfig(I2C1ENABLE);//允許接受應答
I2C_GenerateSTART(I2C1ENABLE);//發送start信號
while(!I2C_CheckEvent(I2C1I2C_EVENT_MASTER_MODE_SELECT));//stm32設置為主模式完畢
I2C_Send7bitAddress(I2C1pca_adrrI2C_Direction_Transmitter);//發送I2C器件地址
while(!I2C_CheckEvent(I2C1I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));//I2C地址發送完畢
I2C_SendData(I2C1address);//發送?命令地址
while(!I2C_CheckEvent(I2C1I2C_EVENT_MASTER_BYTE_TRANSMITTED));//等待發送完畢
I2C_SendData(I2C1data);//發送?命令數據
while(!I2C_CheckEvent(I2C1I2C_EVENT_MASTER_BYTE_TRANSMITTED));//等待發送完畢
I2C_GenerateSTOP(I2C1ENABLE);//發送stop信號
}
u8?I2C1_Read_Data(u8?read_addr)
{
?
while(I2C_GetFlagStatus(I2C1?I2C_FLAG_BUSY));?//檢測總線是否忙?就是看?SCL?或SDA是否為?低?
I2C_AcknowledgeConfig(I2C1ENABLE);//允許接受應答
I2C_GenerateSTART(I2C1ENABLE);//發送start信號
while(!I2C_CheckEvent(I2C1I2C_EVENT_MASTER_MODE_SELECT));//stm32設置為主模式完畢
I2C_Send7bitAddress(I2C1pca_adrrI2C_Direction_Transmitter);//發送I2C器件地址
while(!I2C_CheckEvent(I2C1I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));//I2C地址發送完畢
I2C_SendData(I2C1read_addr);//發送?命令地址
while(!I2C_CheckEvent(I2C1I2C_EVENT_MASTER_BYTE_TRANSMITTED));//等待發送完畢
I2C_GenerateSTART(I2C1ENABLE);//發送start信號
while(!I2C_CheckEvent(I2C1I2C_EVENT_MASTER_MODE_SELECT));//stm32設置為主模式完畢
I2C_Send7bitAddress(I2C1pca_adrr|0x01I2C_Direction_Receiver);//發送I2C器件地址
while(!I2C_CheckEvent(I2C1I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));//I2C地址發送完畢
I2C_AcknowledgeConfig(I2C1DISABLE);//關閉應答
I2C_GenerateSTOP(I2C1ENABLE);//產生停止位
while(!I2C_CheckEvent(I2C1I2C_EVENT_MASTER_BYTE_RECEIVED));//等待接受完成
return?I2C_ReceiveData(I2C1);//將讀到數據強制類型轉換后返回
}
//BCD轉DEC(BCD為8421碼)
u8?BCD2HEX(u8?val)
{
????u8?i;
????i=?val&0x0f;
????val?>>=?4;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2020-08-08?15:57??16路舵機驅動\
?????目錄???????????0??2020-08-08?15:57??16路舵機驅動\Doc\
?????文件????????1646??2020-02-17?00:44??16路舵機驅動\Doc\readme.txt
?????目錄???????????0??2020-08-12?11:22??16路舵機驅動\HARDWARE\
?????目錄???????????0??2020-08-08?15:57??16路舵機驅動\HARDWARE\IIC1\
?????文件????????3498??2020-08-06?00:01??16路舵機驅動\HARDWARE\IIC1\IIC1.c
?????文件?????????437??2020-08-05?23:41??16路舵機驅動\HARDWARE\IIC1\IIC1.h
?????目錄???????????0??2020-08-19?20:50??16路舵機驅動\HARDWARE\PCA9685\
?????文件????????2621??2020-08-19?20:48??16路舵機驅動\HARDWARE\PCA9685\pca9685.c
?????文件?????????471??2020-08-19?20:50??16路舵機驅動\HARDWARE\PCA9685\pca9685.h
?????目錄???????????0??2020-08-08?15:57??16路舵機驅動\Libraries\
?????目錄???????????0??2020-08-08?15:57??16路舵機驅動\Libraries\CMSIS\
?????文件???????17273??2015-07-04?15:01??16路舵機驅動\Libraries\CMSIS\core_cm3.c
?????文件???????85714??2015-07-04?15:01??16路舵機驅動\Libraries\CMSIS\core_cm3.h
?????目錄???????????0??2020-08-08?15:57??16路舵機驅動\Libraries\CMSIS\startup\
?????文件???????15766??2015-07-04?15:01??16路舵機驅動\Libraries\CMSIS\startup\startup_stm32f10x_cl.s
?????文件???????15503??2015-07-04?15:01??16路舵機驅動\Libraries\CMSIS\startup\startup_stm32f10x_hd.s
?????文件???????15692??2015-07-04?15:01??16路舵機驅動\Libraries\CMSIS\startup\startup_stm32f10x_hd_vl.s
?????文件???????12376??2015-07-04?15:01??16路舵機驅動\Libraries\CMSIS\startup\startup_stm32f10x_ld.s
?????文件???????13656??2015-07-04?15:01??16路舵機驅動\Libraries\CMSIS\startup\startup_stm32f10x_ld_vl.s
?????文件???????12765??2015-07-04?15:01??16路舵機驅動\Libraries\CMSIS\startup\startup_stm32f10x_md.s
?????文件???????14073??2015-07-04?15:01??16路舵機驅動\Libraries\CMSIS\startup\startup_stm32f10x_md_vl.s
?????文件???????15955??2015-07-04?15:01??16路舵機驅動\Libraries\CMSIS\startup\startup_stm32f10x_xl.s
?????文件??????633941??2015-07-04?15:01??16路舵機驅動\Libraries\CMSIS\stm32f10x.h
?????文件???????36557??2015-07-04?15:01??16路舵機驅動\Libraries\CMSIS\system_stm32f10x.c
?????文件????????2085??2015-07-04?15:01??16路舵機驅動\Libraries\CMSIS\system_stm32f10x.h
?????目錄???????????0??2020-08-08?15:57??16路舵機驅動\Libraries\STM32F10x_StdPeriph_Driver\
?????目錄???????????0??2020-08-08?15:57??16路舵機驅動\Libraries\STM32F10x_StdPeriph_Driver\inc\
?????文件????????8982??2015-07-04?15:01??16路舵機驅動\Libraries\STM32F10x_StdPeriph_Driver\inc\misc.h
?????文件???????21690??2015-07-04?15:01??16路舵機驅動\Libraries\STM32F10x_StdPeriph_Driver\inc\stm32f10x_adc.h
?????文件????????7555??2015-07-04?15:01??16路舵機驅動\Libraries\STM32F10x_StdPeriph_Driver\inc\stm32f10x_bkp.h
............此處省略251個文件信息
- 上一篇:Arduino所有庫.zip
- 下一篇:模擬集成電路的分析與設計.pdf
評論
共有 條評論