#define HZ(x) (u16)(72000000/sizeof(Sine12bit)*2/x) //计算Hz
#define DAC_DHR12R1 0x40007408 //外设DAC通道1的基地址
u16 Sine12bit[256]={ //正弦波描点
2048, 2098, 2148, 2198, 2248, 2298, 2348, 2398, 2447, 2496,
2545, 2594, 2642, 2690, 2737, 2785, 2831, 2877, 2923, 2968,
3013, 3057, 3100, 3143, 3185, 3227, 3267, 3307, 3347, 3385,
3423, 3460, 3496, 3531, 3565, 3598, 3631, 3662, 3692, 3722,
3750, 3778, 3804, 3829, 3854, 3877, 3899, 3920, 3940, 3958,
3976, 3992, 4007, 4021, 4034, 4046, 4056, 4065, 4073, 4080,
4086, 4090, 4093, 4095, 4095, 4095, 4093, 4090, 4086, 4080,
4073, 4065, 4056, 4046, 4034, 4021, 4007, 3992, 3976, 3958,
3940, 3920, 3899, 3877, 3854, 3829, 3804, 3778, 3750, 3722,
3692, 3662, 3631, 3598, 3565, 3531, 3496, 3460, 3423, 3385,
3347, 3307, 3267, 3227, 3185, 3143, 3100, 3057, 3013, 2968,
2923, 2877, 2831, 2785, 2737, 2690, 2642,

本文介绍了如何使用STM32通过C语言生成50Hz到20kHz范围内的可调正弦波,同时调整峰峰值在0到3.3V之间。通过定义`HZ`宏来计算频率,使用DAC和DMA配置产生正弦波,并通过TIM2进行周期设置。代码中提供了正弦波描点数组和相应的函数以实现波形的生成与调整。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



