91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 6KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-08
  • 語言: 其他
  • 標簽: MAX30102??

資源簡介

利用STM32F407開發板對MAX30102體溫模塊的開發,可以接受整形數據,需要對IIC串口初始化,還有數據協議包的發送

資源截圖

代碼片段和文件信息

#include?
#include?“stm32f4xx.h“
#include?“SysTick.h“

void?GECM4_AT24CXX_INIT(void)
{
//?1.?配置i2c1引腳
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB?ENABLE);

GPIO_InitTypeDef?p;
p.GPIO_Mode?=?GPIO_Mode_AF;
p.GPIO_OType?=?GPIO_OType_OD;
p.GPIO_Pin?=?GPIO_Pin_8?|?GPIO_Pin_9;
p.GPIO_PuPd?=?GPIO_PuPd_NOPULL;
p.GPIO_Speed?=?GPIO_Speed_50MHz;
GPIO_Init(GPIOB??&p);

GPIO_PinAFConfig(GPIOB?GPIO_PinSource8?GPIO_AF_I2C1);
GPIO_PinAFConfig(GPIOB?GPIO_PinSource9?GPIO_AF_I2C1);

//?2.?初始化I2C控制器
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1?ENABLE);
I2C_InitTypeDef?i;
i.I2C_Ack?=?I2C_Ack_Enable;
i.I2C_AcknowledgedAddress?=?I2C_AcknowledgedAddress_7bit;
i.I2C_ClockSpeed?=?100000;
i.I2C_DutyCycle?=?I2C_DutyCycle_16_9;
i.I2C_Mode?=?I2C_Mode_I2C;
i.I2C_OwnAddress1?=?0x55;?//沒用到
I2C_Init(I2C1?&i);


//?3.?I2C?Enable
I2C_Cmd(I2C1?ENABLE);

}

void?Write_A_Byte_To_Max30102(uint8_t?word_addr??uint8_t?data)
{
//(1)?Send?Start?Signal

//printf(“%d\r\n“?__LINE__);
//當IIC總線BUSY時,我們一直等
while?(?I2C_GetFlagStatus(I2C1?I2C_FLAG_BUSY)?==?SET?);?

//printf(“%d\r\n“?__LINE__);

//產生一個i2c起始信號
I2C_GenerateSTART(I2C1?ENABLE);

//printf(“%d\r\n“?__LINE__);
//wait?EV5
while?(?I2C_CheckEvent(I2C1?I2C_EVENT_MASTER_MODE_SELECT)?==?ERROR);

//printf(“%d\r\n“?__LINE__);
//------

//?I2C?Slave?ADDR(表示你要與哪個設備通信)
I2C_Send7bitAddress(I2C1??0xAE?I2C_Direction_Transmitter);?//主發


//wait?EV6???;?Master?Send??mode
while?(?I2C_CheckEvent(I2C1?
I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)?==?ERROR);

//?Send?Word?Addr
I2C_SendData(I2C1?word_addr);

//wait?EV8
while?(?I2C_CheckEvent(I2C1?
I2C_EVENT_MASTER_BYTE_TRANSMITTING)?==?ERROR);

//Send?data
I2C_SendData(I2C1?data);

//wait?EV8
while?(?I2C_CheckEvent(I2C1?
I2C_EVENT_MASTER_BYTE_TRANSMITTED)?==?ERROR);

I2C_GenerateSTOP(I2C1?ENABLE);

//printf(“finished\r\n“);


}

uint8_t??Read_A_Byte_From_Max30102(uint8_t?word_addr)
{
uint8_t?recv;

//(1)?Send?Start?Signal

//當IIC總線BUSY時,我們一直等
while?(?I2C_GetFlagStatus(I2C1?I2C_FLAG_BUSY)?==?SET?);?

//printf(“%s?L_%d\n“?__FUNCTION__?__LINE__);
//產生一個i2c起始信號
I2C_GenerateSTART(I2C1?ENABLE);



//?wait?ev5
while?(?I2C_CheckEvent(I2C1?I2C_EVENT_MASTER_MODE_SELECT)?==?ERROR);

//send?I2C?Slave?ADDR
I2C_Send7bitAddress(I2C1?0xAE?I2C_Direction_Transmitter);

//?wait?ev6
while?(?I2C_CheckEvent(I2C1?
I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)?==?ERROR);


//??word?addr
I2C_SendData(I2C1word_addr);

while?(?I2C_CheckEvent(I2C1?I2C_EVENT_MASTER_BYTE_TRANSMITTED)?==?ERROR);


I2C_GenerateSTART(I2C1?ENABLE);
//?wait?ev5
while?(?I2C_CheckEvent(I2C1?I2C_EVENT_MASTER_MODE_SELECT)?==?ERROR);

//send?I2C?Slave?ADDR
I2C_Send7bitAddress(I2C1?0xAF?I2C_

評論

共有 條評論