/** * @file main.c * @author Myth * @version 0.6 * @date 2021.10.15 * @brief 工程主函数文件 * @details 初始化及主循环 * @note 此版本实现功能: * 串口回显,回显时 PC13 上的 LED 闪烁 * AHT20 温度湿度读取及 BH1750 光照度读取 * 此版本实现了 AHT20 和 BH1750 的最高速读取。每一次读取结束后 LED 闪烁 * JTAG 已禁用,请使用 SWD 调试 */ #include "sys.h" #include "systick.h" #include "uart.h" #include "softi2c.h" #include "led.h" #include "aht20.h" #include "bh1750.h" void Echo(uint8_t byte); int main(void) { if (HAL_Init() != HAL_OK) //初始化 HAL 库 { Error_Handler(__FILE__, __LINE__); //错误处理 } SystemClock_Config(); //初始化系统时钟为 72MHz DisableJTAG(); //禁用 JTAG SysTick_Init(); //初始化 SysTick 和软件定时器 UART_Init(); //初始化串口 LED_Init(); //初始化 LED UART_BindReceiveHandle(COM1, Echo); //绑定 COM1 串口接收中断至 Echo 函数 AHT20_Init(); //初始化 AHT20 float humi, temp; BH1750_Init(); //初始化 BH1750 float light; while (1) { //程序主循环 AHT20_Start(); // AHT20 开始测量 BH1750_Start(); // BH1750 开始测量 Delay_ms(80); AHT20_Read(&humi, &temp); //读取 AHT20 Delay_ms(100); light = BH1750_Read(); //读取 BH1750 printf("humi: %.1f temp: %.1f light: %.1f\n", humi, temp, light); LED1_Toggle; } return 1; } /** * @brief 串口回显函数 * @param byte: 本次中断接收到的字节 */ void Echo(uint8_t byte) { LED1_Slow_Toggle; UART_SendChar(COM1, byte); }