main.c
来自「基于MDK的LPC1100处理器开发应用例程」· C语言 代码 · 共 159 行
C
159 行
/**** (C) COPYRIGHT 2010 UP Team, Wuhan University of Technology ************
* 文件名: main.c
* 作者 : UP Team, Wuhan University of Technology
* 日期 : 01/18/2010
* 描述 : 主程序源文件.
*******************************************************************************
*******************************************************************************
* 历史:
* 01/18/2010 : V1.0 初始版本
*******************************************************************************/
/* Includes ------------------------------------------------------------------*/
#include <stdio.h>
#include "LPC11xx.h"
#include "uart.h"
#include "type.h"
#include "i2c.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
#define LM75_ADDR 0x90
#define TEMPERATURE_REG_ADDR 0x00000000 /* 温度寄存器,只读 */
#define CONFIGURATION_REG_ADDR 0x00000001 /* 配置寄存器,可读写 */
#define TOS_SET_POINT 0x00000011 /* Tos设置指针寄存器,可读写 */
#define THYST_SET_POINT 0x00000010 /* Thyst设置指针寄存器,可读写 */
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
uint8_t ErrorCount = 0;
extern volatile uint32_t I2CCount;
extern volatile uint8_t I2CMasterBuffer[I2C_BUFSIZE];
extern volatile uint8_t I2CSlaveBuffer[I2C_BUFSIZE];
extern volatile uint32_t I2CMasterState;
extern volatile uint32_t I2CReadLength, I2CWriteLength;
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
/**
* @函数名:I2CReadTemSensor
* @描述:获取温度传感器某一寄存器值
* @参数 DeviceAddr - 硬件地址
* @参数 RegAddr - 寄存器地址
* @参数 ReadSize - 读块大小 (字节)
* @返回值:无
*/
uint32_t I2CReadTemSensor(uint8_t DeviceAddr, uint8_t RegAddr, uint32_t ReadSize)
{
I2CWriteLength = 2;
I2CReadLength = ReadSize;
I2CMasterBuffer[0] = DeviceAddr;
I2CMasterBuffer[1] = RegAddr;
I2CMasterBuffer[2] = DeviceAddr | RD_BIT;
if (!(I2CEngine()))
{
printf("\n\r -E- Read fail! \n\r");
return ( FALSE );
}
return ( TRUE );
}
/**
* @函数名:main
* @描述:主函数
* @参数: 无
* @返回值:无
*/
int main (void)
{
uint32_t i;
SystemInit();
/* NVIC配置包含在UARTInit函数中 */
UARTInit(115200);
printf("\n\r-- Basic I2C Temperature Sensor Project V1.0 --\n\r");
printf("\n\r-- EM-LPC1100 --\n\r");
printf("\n\r-- I2C Temperature Sensor test -- \n\r");
/* 初始化I2C */
if ( I2CInit( (uint32_t)I2CMASTER ) == FALSE )
{
/* 初始化失败 */
while ( 1 );
}
for ( i = 0; i < I2C_BUFSIZE; i++ )
{
I2CSlaveBuffer[i] = 0x00;
}
/* 读温度寄存器 */
if (I2CReadTemSensor(LM75_ADDR, TEMPERATURE_REG_ADDR, 2))
{
printf("\n\r-I- Temperature Register value:0x%X\n\r", (I2CSlaveBuffer[0] << 8 | (I2CSlaveBuffer[1] & 0x80)));
}
else
{
ErrorCount++;
}
/* 读配置寄存器 */
if (I2CReadTemSensor(LM75_ADDR, CONFIGURATION_REG_ADDR, 1))
{
printf("\n\r-I- Configuration Register value:0x%X\n\r", I2CSlaveBuffer[0]);
}
else
{
ErrorCount++;
}
/* 读Tos设置指针寄存器 */
if (I2CReadTemSensor(LM75_ADDR, TOS_SET_POINT, 2))
{
printf("\n\r-I- Tos Set Point Register value:0x%X\n\r", (I2CSlaveBuffer[0] << 8 | (I2CSlaveBuffer[1] & 0x80)));
}
else
{
ErrorCount++;
}
/* 读Thyst设置指针寄存器 */
if (I2CReadTemSensor(LM75_ADDR, THYST_SET_POINT, 2))
{
printf("\n\r-I- Thyst Set Point Register value:0x%X\n\r", (I2CSlaveBuffer[0] << 8 | (I2CSlaveBuffer[1] & 0x80)));
}
else
{
ErrorCount++;
}
/* 测试成功 */
if (ErrorCount == 0)
{
printf("\n\r I2C Temperature Sensor test success!\n\r");
}
else /* 测试失败 */
{
printf("\n\r I2C Temperature Sensor test fail!\n\r");
}
return 0;
}
/**
* @}
*/
/**
* @}
*/
/**** (C) COPYRIGHT 2010 UP Team, Wuhan University of Technology****文件结束****/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?