# Acmp_Continuous_Loop_Demo

---

## 功能描述

本示例用于演示如何利用 ACMP 模块内置的 8 位 DAC 输出简单音乐:

1. YTM32B1MD2 没有独立的 DAC 外设，ACMP0 内部集成了一个 8 位 DAC，通过 DAC 寄存器的 OUTEN 位可将其模拟输出连接到外部引脚 PTC8（DAC0_OUT）
2. 程序使用直接数字合成（DDS）方式播放音乐：用一个 256 点的正弦查表加相位累加器，在固定采样率（20kHz）下不断刷新 DAC 数值寄存器，从而在 PTC8 上合成出音符波形
3. 采样定时使用 Cortex-M33 的 DWT 周期计数器，精度高且不与 OSIF 的 SysTick 冲突；核心时钟在运行时通过 `CLOCK_SYS_GetFreq(CORE_CLK, ...)` 获取，无需硬编码
4. 内置示例乐曲为《小星星》(Twinkle Twinkle Little Star)，开机后在 `main` 的主循环中循环播放，播放期间蓝色 LED 点亮作为节拍指示
5. 音符频率、时值与乐曲均可在 `app/dac_music.c` / `app/dac_music.h` 中修改

> 说明：PTC8 的引脚复用（DAC0_OUT）已在 `board/pin_mux.c` 中配置好。ACMP DAC 输出驱动能力有限，建议将 PTC8 接示波器、有源蜂鸣器或带功放的扬声器来收听，请勿直接驱动低阻扬声器。

---

## 硬件需求

+ **开发板**: YTM32B1MD2-EVB-Q100
+ **调试器**: J-LINK v9.2 或更高版本
+ **其他**  : 在 PTC8（DAC0_OUT）上连接示波器/有源蜂鸣器/带功放扬声器以观察或收听

---

## 软件需求

+ **SDK**     : YTM32B1MD2_1_4_0 或更高版本
+ **GCC**     : GNU GCC v10.3 或更高版本
+ **Keil/MDK**: ARM Keil/MDK v5.36 或更高版本
+ **IAR**     : IAR v8.40 或更高版本
+ **VS Code** : Microsoft Visual Studio Code IDE v1.76 或更高版本（GNU GCC 工具链，CMake v3.25，ninja，Cortex-Debug 扩展安装）
+ **J-LINK**  : SEGGER JLINK v6.96 或更高版本，需要安装 YTM32B1MD2 补丁（支持包）
+ **Ozone**   : SEGGER Ozone v3.28 或更高版本

---
