第八章配套应用源码与使用条件

默认芯片：STM32F103RCT6，LQFP64高密度。使用官方STM32F10x SPL 3.5/CMSIS模板、
startup_stm32f10x_hd.s、system_stm32f10x.c、STM32F10X_HD目标宏及对应设备头。
本包只包含本讲义原创应用代码，不捆绑厂商启动文件/库，不是已做实板测试的IDE工程。
各题分开建工程，勿加入多个main或同名ISR。官方it.c里相关默认ISR定义应删除或替换，
不能与本包定义重复。按题目加入所需SPL源并设置头文件路径/USE_STDPERIPH_DRIVER等。

文件组合：
q28：二选一register_main.c / spl_main.c；SPL版需gpio、rcc库源。
q32：capture_main.c + board_capture.c；需rcc、gpio、tim库；common为头文件路径。
q36：main.c + common/board.c。
q49：main.c + common/board.c。
q52：main.c + common/board.c（该文件含未使用tick函数，仍提供相应ISR，避免与默认重复）。
q53：main.c + common/board.c + common/uart_irq.c。
q54：main.c + common/board.c + common/uart_irq.c。
common/ring.h用于中断UART软件队列；algorithms/page_chunks.h提供纯C分页拆分算法。

时钟：除q28不涉及计时，应用main都显式切换到HSI8MHz、AHB/APB无分频。
TIM2 PSC=7，计数1MHz；tick ARR=999产生1ms；串口BRR按8MHz计算。
内部RC有容差，时间精度/通信误差以器件与双方时钟为准。72MHz正文算例不直接套入源码。

接线：PA8红LED、PA9绿LED，各经LED和510欧限流从3.3V接入，低有效；PC5按键接地、内部上拉。
q36无按钮，红/绿各5秒。q49红20秒绿30秒，接受一次下降沿后主循环及时切换并重计时，20ms边沿消抖。
UART题PA9_TX/PA10_RX；与红绿灯题分开，PA9不能同时驱绿灯与串口。板间TX交RX并共地，逻辑电平匹配。
q32输入PA1/TIM2_CH2，正脉冲频率测量，周期须小于65536us；信号停止需应用增加超时，输出会保留最后有效值。

UART适用单主循环+ISR，队列容量128、有效127字节，RX满丢新并计数；TX满返回失败。
没有捏造F103硬件FIFO；带FIFO硬件应另外实现抽象中的drain/fill过程。
q53双方各发HELLO
，收到HELLO回ACK
，不回复ACK；3秒截止；过长行丢到换行。
链路失败后不再处理应用，ISR仍可能排出已排队数据；如需关闭外设，须等待队列/TC并明确停机策略。

验证：纯C队列、分页和协议/定时状态可在主机核对；器件头/库/中断/时钟和引脚必须在实际目标工具链构建与实板验证。
没有声称在本环境中用MDK构建完整目标工程。详见HTML各节和题卡的边界说明。
