DAC+定时器 生成正弦波,三角波
正弦波生成
配置如下
DAC触发 trigger是由TIM2事件触发。
TIM2配置方式
/** * 生成正弦波数据点函数 * @param NPoints �???个周期内的点�??? * @param VMaxRange 输出的电压最大�?�,取�?�范�???0~3.3V * @param SineWaveTable 存放生成的数据点 */ void SineWaveGen(uint32_t NPoints, float VMaxRange, uint16_t* SineWaveTable) { #ifndef PI #define PI 3.14159265358979323846 #endif int b = 0; double radian = 0; // 弧度 double setup = 0; // 弧度和弧度之间的大小 double voltage = 0; // 输出电压 setup = (2 * PI) / NPoints; // 两点之间的间�??? while (b< NPoints) { voltage = VMaxRange / 2.0 * (sin(radian) + 1.0); // 计算电压 SineWaveTable[b] = (uint16_t)(voltage * 4096 / 3.3); // 电压转为DAC数�?? radian += setup; // 下一个点的弧�??? b++; } }
int main()
{
SineWaveGen(100,3.3,SineWaveTable);//生成sin函数的点
HAL_TIM_Base_Start(&htim2);
HAL_DAC_Start_DMA(&hdac, DAC_CHANNEL_1, (uint32_t *)SineWaveTable, 100, DAC_ALIGN_12B_R);
while(1)
{
}
}
三角波
可以在配置中生成 三角波和噪声波,4095可以改幅度,同样是tim2触发tim2配置同上
然后写开始函数
int main() { HAL_TIM_Base_Start(&htim2); HAL_DAC_Start(&hdac, DAC_CHANNEL_1); while(1) { } }
看示波器生成波形
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用