芯片复制单有了显示单元还只是解决了人机交互的部分问题,要让机器具备感知能力就离不开传感器。传感器的种类有许多种,BH1750光照传感器就是其中的一种,它是一种基于I2C接口的数字式传感器,因此无需对获取的数据进行标度处理。
该传感器与MCU的连接关系如下:
SCL ---PB6
SDA---PB7
为使该传感器工作,其相应引脚输出高低电平的语句为:
#define SCL_Set()        Gpio_SetIO(GpioPortB, GpioPin6)
#define SCL_Clr()        Gpio_ClrIO(GpioPortB, GpioPin6)
#define SDA_Set()        Gpio_SetIO(GpioPortB, GpioPin7)
#define SDA_Clr()        Gpio_ClrIO(GpioPortB, GpioPin7)
定义数据引脚为输入、芯片复制输出功能的函数为:
- void IIC_INPUT_MODE_SET()
 
- {
 
-     stc_gpio_cfg_t stcGpioCfg;
 
-     Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
 
-     stcGpioCfg.enDir = GpioDirIn;
 
-     stcGpioCfg.enDrv = GpioDrvL;
 
-     stcGpioCfg.enPu = GpioPuDisable;
 
-     stcGpioCfg.enPd = GpioPdDisable;
 
-     stcGpioCfg.enOD = GpioOdDisable;
 
-     stcGpioCfg.enCtrlMode = GpioAHB;
 
-     Gpio_Init(GpioPortB, GpioPin7, &stcGpioCfg);
 
- }
 
 
- void IIC_OUTPUT_MODE_SET()
 
- {
 
-     stc_gpio_cfg_t stcGpioCfg;
 
-     Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
 
-     stcGpioCfg.enDir = GpioDirOut;
 
-     stcGpioCfg.enPu = GpioPuDisable;
 
-     stcGpioCfg.enPd = GpioPdEnable;
 
-     Gpio_Init(GpioPortB, GpioPin7, &stcGpioCfg);
 
- }
BH1750的初始化函数为:
- void BH1750_Init(void)
 
- {
 
-     stc_gpio_cfg_t stcGpioCfg;
 
-     Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
 
-     stcGpioCfg.enDir = GpioDirOut;
 
-     stcGpioCfg.enPu = GpioPuDisable;
 
-     stcGpioCfg.enPd = GpioPdEnable;
 
-     Gpio_Init(GpioPortB, GpioPin6, &stcGpioCfg);
 
-     Gpio_Init(GpioPortB, GpioP