# A111 STM32G030F6三键及显示目标候选

sh build.sh / sh test.sh。全部CMSIS/启动/链接源码随包，构建无需网络，工具链arm-none-eabi GCC16.2.0。

从A108独立目标复制，再接入A109 vd_render/vd_service。PA6为SCL、PA7为SDA：ODR先释放，再设置开漏输出，无内部上拉，其他GPIO模式位保持。对应A106 J5.3/4，外部3.3V上拉、电缆方向和模块供电必须确认；禁止5V上拉。Waveshare0.91inch/128×32/SSD1306是工程候选，3C是配置候选地址，模块焊盘/复位/实际地址待测。

TIM14专用自由计数1MHz，PSC15/ARR65535，仅允许SystemCoreClock16MHz且AHB/APB不分频，无TIM14中断/输出。时间单位是基于配置的名义微秒，未测晶振/HSI误差。5us低/高最小候选，不是实测100kHz。每写包最多17payload+1address字节；SCL拉伸100us、总交易4000us候选期限，计数停转还有20000轮有限预算，不保证停转时真实耗时<=4ms。计时器回绕按16bit差值处理，超长ISR跨完整65ms计数周期须另测，不能声称所有中断延迟均符合期限。

3键计划10ms、风机诊断/测速100ms、显示计划5ms服务一次至多一个正常包；失败最多再尝试一个关屏包。显示帧计划500ms，首次等待100ms供电稳定候选时间。显示传输是前台有界阻塞，不是DMA/异步逐边沿；有效timer下最长两笔名义期限约8ms，仍可能影响10ms按键周期，实体须测主循环/ADC/ISR/故障共同作用的最大间隔。每帧关屏/写入/开屏的候选策略可能闪烁，不代表观感一致。

目标实际调用渲染及GPIO传输，不只是对象文件。目标仍qualified=false、measurement_valid=false，只有FAN OFF/LEVELn/SUCTION--%等未标定信息，不显示合成100/37数据。物理风机状态与断电仍未测量。学习资源false、风机参数与ADC标定invalid、输出锁仍关闭。显示失败锁存到重启并取消UI运行请求，未添加自动故障重试或继续运行许可。

g_display_packets是服务尝试数（失败关屏额外交易不计入该计数），g_display_frames是所有包回调成功后的帧数，不是光学成功；g_display_fault是si_status，0x100表示初始化时钟条件不满足。SI_NACK/线路busy/拉伸/数据被拉低/期限/有限预算耗尽均失败。单主机假设，不支持多主机仲裁或自动清线。

主机ASan/UBSan：2176地址/长度线级序列、256字节图案、18个字节逐一NACK、短时拉伸/拉伸超时、数据线拉低、计时停转/交易期限/回绕；实际GPIO源在寄存器模型中验证只修改PA6/7与TIM14配置。A108按键/风机/输出锁和A109独立显存模型/80传输故障回归通过。GPIO寄存器模型不模拟真实外设时钟、焊接、电压、上拉/寄生或边沿波形。完整target构建与反汇编确认真实调用链；未刷写或运行MCU。

静态512字节渲染帧缓冲加driver冻结帧，避免把512字节帧放在主循环栈。-fstack-usage数据随包，未测最大栈水位。FLASH7768字节，RAM链接分配2536字节（含预留栈/堆），不是运行最大内存。

下一步需将上拉/模块/接插件落实并验证亮屏、地址、复位、刷新、总线/按键周期与显示故障，再完成真实吸力测量、学习/持久化、风机四档和滤网/噪声/热效果。完整三款效果与千台整机成本未通过。禁止把本候选当量产放行。

TIM14和封装定义的官方依据：https://www.st.com/resource/en/datasheet/stm32g030f6.pdf 。标准显示工程依据沿用A109。

A111硬件新增R18/R19两颗4.7k上拉到CTRL_3V3；具体料号需满足1%容差并核价。固件低电平函数先读取SCL实际低，再等待名义>=1us，5us等待使用6计数差补偿1MHz量化。模型验证A110延迟SCL下降时缺少该保护，而A111通过。上升边沿/实际电平和HSI误差未验证。
