菜单支持,所有功能都测试成功
This commit is contained in:
@@ -33,6 +33,7 @@
|
||||
#include "st7735s.h"
|
||||
#include "lcd.h"
|
||||
#include "at24c02.h"
|
||||
#include "menu.h"
|
||||
|
||||
/* USER CODE END Includes */
|
||||
|
||||
@@ -91,9 +92,6 @@ int main(void)
|
||||
SystemClock_Config();
|
||||
|
||||
/* USER CODE BEGIN SysInit */
|
||||
/* ADC 时钟预分频:PCLK2 / 6 = 72/6 = 12MHz */
|
||||
/* 默认 /2=36MHz 超过 14MHz 规格,ADC 无法正常工作 */
|
||||
RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_ADCPRE) | RCC_CFGR_ADCPRE_DIV6;
|
||||
/* USER CODE END SysInit */
|
||||
|
||||
/* Initialize all configured peripherals */
|
||||
@@ -143,63 +141,40 @@ int main(void)
|
||||
/* 启动 ADC 注入组(TIM4 每触发一次,自动采一轮 PA0~PA3) */
|
||||
HAL_ADCEx_InjectedStart(&hadc1);
|
||||
|
||||
/* === AT24C02 EEPROM 测试 === */
|
||||
{
|
||||
uint8_t wbuf[] = {0x11, 0x22, 0x33, 0x44, 0x55};
|
||||
uint8_t rbuf[8];
|
||||
int i, ret;
|
||||
|
||||
ret = at24c02_scan();
|
||||
if (ret == AT24C02_OK) {
|
||||
lcd_draw_string(0, 64, "AT24C02 OK", COLOR_GREEN, COLOR_BLACK);
|
||||
} else {
|
||||
lcd_draw_string(0, 64, "AT24C02 FAIL", COLOR_RED, COLOR_BLACK);
|
||||
}
|
||||
|
||||
/* 在地址 0 写入 5 个字节 */
|
||||
ret = at24c02_write_buf(0, wbuf, 5);
|
||||
printf("AT24C02 write: %d\r\n", ret);
|
||||
|
||||
/* 从地址 0 读回 8 个字节 */
|
||||
ret = at24c02_read_buf(0, rbuf, 8);
|
||||
printf("AT24C02 read[%d]:", ret);
|
||||
for (i = 0; i < 8; i++) {
|
||||
printf(" %02X", rbuf[i]);
|
||||
}
|
||||
printf("\r\n");
|
||||
|
||||
/* 验证 */
|
||||
lcd_draw_string(0, 80, "EEPROM:", COLOR_WHITE, COLOR_BLACK);
|
||||
for (i = 0; i < 5; i++) {
|
||||
if (rbuf[i] != wbuf[i]) {
|
||||
printf("AT24C02 ERR: addr %d expect %02X got %02X\r\n",
|
||||
i, wbuf[i], rbuf[i]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i == 5) {
|
||||
printf("AT24C02 verify OK\r\n");
|
||||
}
|
||||
/* AT24C02 检测 */
|
||||
if (at24c02_scan() == AT24C02_OK) {
|
||||
lcd_draw_string(0, 80, "AT24C02 OK", COLOR_GREEN, COLOR_BLACK);
|
||||
} else {
|
||||
lcd_draw_string(0, 80, "AT24C02 FAIL", COLOR_RED, COLOR_BLACK);
|
||||
}
|
||||
|
||||
/* 进入菜单界面 */
|
||||
menu_init();
|
||||
|
||||
/* USER CODE END 2 */
|
||||
|
||||
/* Infinite loop */
|
||||
/* USER CODE BEGIN WHILE */
|
||||
uint32_t tick_last = 0;
|
||||
while (1)
|
||||
{
|
||||
/* USER CODE END WHILE */
|
||||
|
||||
/* USER CODE BEGIN 3 */
|
||||
HAL_Delay(1000);
|
||||
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
|
||||
/* 菜单按键处理(每帧必须频繁调用) */
|
||||
menu_process();
|
||||
|
||||
/* 读取 ADC 注入组结果(TIM4 以 1kHz 触发,每秒打印一次最新值) */
|
||||
uint16_t adc0 = HAL_ADCEx_InjectedGetValue(&hadc1, ADC_INJECTED_RANK_1);
|
||||
uint16_t adc1 = HAL_ADCEx_InjectedGetValue(&hadc1, ADC_INJECTED_RANK_2);
|
||||
uint16_t adc2 = HAL_ADCEx_InjectedGetValue(&hadc1, ADC_INJECTED_RANK_3);
|
||||
uint16_t adc3 = HAL_ADCEx_InjectedGetValue(&hadc1, ADC_INJECTED_RANK_4);
|
||||
printf("ADC: %4d %4d %4d %4d\r\n", adc0, adc1, adc2, adc3);
|
||||
/* 每秒执行一次:LED翻转 + ADC打印 */
|
||||
if (HAL_GetTick() - tick_last >= 1000) {
|
||||
tick_last = HAL_GetTick();
|
||||
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
|
||||
|
||||
uint16_t adc0 = HAL_ADCEx_InjectedGetValue(&hadc1, ADC_INJECTED_RANK_1);
|
||||
uint16_t adc1 = HAL_ADCEx_InjectedGetValue(&hadc1, ADC_INJECTED_RANK_2);
|
||||
uint16_t adc2 = HAL_ADCEx_InjectedGetValue(&hadc1, ADC_INJECTED_RANK_3);
|
||||
uint16_t adc3 = HAL_ADCEx_InjectedGetValue(&hadc1, ADC_INJECTED_RANK_4);
|
||||
printf("ADC: %4d %4d %4d %4d\r\n", adc0, adc1, adc2, adc3);
|
||||
}
|
||||
}
|
||||
/* USER CODE END 3 */
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user