STM32

您所在的位置:网站首页 stm32pwm输出正弦波 STM32

STM32

2024-06-16 19:29:47| 来源: 网络整理| 查看: 265

实验要求:输出DAC1通道1(PA4)输出三角波。然后关闭通道1触发(TEN1位置0),关闭输出缓冲(BOFF1位置1),使用12位右对齐模式,将数字量写入DAC_DHR12R1寄存器。

接下来介绍产生三角波的函数。第一个参数为最大值的数字量,取值为0~4095,比如取值2048时候,输出最高值为1.65V;第二个参数为采样点的间隔时间,第三个参数为采样点的数量,而周期为采样点间隔时间 * 采样点的数量;第四个参数是总体产生的波形个数。采样点个数的约束如下:(采样点个数/2) ((maxval + 1) * 2)) return; incval = (maxval + 1) / (samples / 2); for(u16 j = 0; j < n; j++) { curval = 0; HAL_DAC_SetValue(&DAC_HANDLE, channel, DAC_ALIGN_12B_R, curval); for(u16 i = 0; i < (samples/2); i++) //上升波 { curval += incval; HAL_DAC_SetValue(&DAC_HANDLE, channel, DAC_ALIGN_12B_R, curval); delay_us(dt); } for(u16 i = 0; i < (samples/2); i++) //下降波 { curval -= incval; HAL_DAC_SetValue(&DAC_HANDLE, channel, DAC_ALIGN_12B_R, curval); delay_us(dt); } } }

接下来编写主函数的实验代码main.c:

#include "./SYSTEM/sys/sys.h" #include "./SYSTEM/usart/usart.h" #include "./SYSTEM/delay/delay.h" #include "./USMART/usmart.h" #include "./BSP/LED/led.h" #include "./BSP/LCD/lcd.h" #include "./BSP/KEY/key.h" #include "./BSP/DAC/dac.h" #include "./BSP/ADC/adc3.h" int main(void) { uint8_t t = 0; uint8_t key; HAL_Init(); /* 初始化HAL库 */ sys_stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */ delay_init(72); /* 延时初始化 */ usart_init(115200); /* 串口初始化为115200 */ usmart_dev.init(72); /* 初始化USMART */ led_init(); /* 初始化LED */ lcd_init(); /* 初始化LCD */ key_init(); /* 初始化按键 */ dac_init(1); /* 初始化DAC1_OUT1通道 */ lcd_show_string(30, 50, 200, 16, 16, "STM32", RED); lcd_show_string(30, 70, 200, 16, 16, "DAC Triangular WAVE TEST", RED); lcd_show_string(30, 90, 200, 16, 16, "ATOM@ALIENTEK", RED); lcd_show_string(30, 110, 200, 16, 16, "KEY0:Wave1 KEY1:Wave2", RED); lcd_show_string(30, 130, 200, 16, 16, "DAC None", BLUE); /* 提示无输出 */ while (1) { t++; key = key_scan(0); /* 按键扫描 */ if (key == KEY0_PRES) /* 高采样率 , 约1Khz波形 */ { lcd_show_string(30, 130, 200, 16, 16, "DAC Wave1 ", BLUE); dac_triangular_wave(4095, 5, 2000, 100); /* 幅值4095, 采样点间隔5us, 200个采样点, 100个波形 */ lcd_show_string(30, 130, 200, 16, 16, "DAC None ", BLUE); } else if (key == KEY1_PRES) /* 低采样率 , 约1Khz波形 */ { lcd_show_string(30, 130, 200, 16, 16, "DAC Wave2 ", BLUE); dac_triangular_wave(4095, 500, 20, 100); /* 幅值4095, 采样点间隔500us, 20个采样点, 100个波形 */ lcd_show_string(30, 130, 200, 16, 16, "DAC None ", BLUE); } if (t == 10) /* 定时时间到了 */ { LED0_TOGGLE(); /* LED0闪烁 */ t = 0; } delay_ms(10); } }

到这里,实验的代码便写完了。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭