完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的DAC外设,输出任意指定电压值。
1. 准备工作 硬件准备
Keil MDK和串口助手的安装包都可以关注“小熊派开源社区”微信公众号,在资料教程一栏中可获取安装包。2.生成MDK工程 选择芯片型号 打开STM32CubeMX,打开MCU选择器: 搜索并选中芯片STM32L431RCT6: 配置时钟源
配置串口 小熊派开发板板载ST-Link并且虚拟了一个串口,原理图如下: 这里我将开关拨到AT-MCU模式,使PC的串口与USART1之间连接。 接下来开始配置USART1: 配置DAC 确定DAC输出通道 查看小熊派E53接口的原理图: 配置DAC 选择DAC1,开启输出通道2,配置保持默认即可: 配置时钟树 STM32L4的最高主频到80M,所以配置PLL,最后使HCLK = 80Mhz即可: 生成工程设置 代码生成设置 最后设置生成独立的初始化文件: 生成代码 点击GENERATE CODE即可生成MDK-V5工程: 3. 在MDK中编写、编译、下载用户代码 重定向printf( )函数 参考:重定向printf函数到串口输出的多种方法。 编写测试代码 首先设置DAC输出的数据为12位右对齐,然后指定输出的值0-4096,实际输出的电压为 value/4096x3.3V,最后使能DAC转换,代码如下: int main(void) { /* USER CODE BEGIN 1 */ uint16_t i = 0; /* USER CODE END 1 */ HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_DAC1_Init(); MX_USART1_UART_Init(); /* USER CODE BEGIN 2 */ printf("DAC Test...rn"); HAL_DAC_Start(&hdac1, DAC_CHANNEL_2); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ for(i = 0; i < 4096; i++) { HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_2, DAC_ALIGN_12B_R, i); HAL_Delay(2); } printf("DAC test finish, test again!rn"); /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ } 至此,我们已经学会如何使用DAC输出任意指定电压值。 |
|
|
|
只有小组成员才能发言,加入小组>>
2545 浏览 0 评论
1143浏览 2评论
743浏览 1评论
496浏览 0评论
257浏览 0评论
419浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 13:07 , Processed in 1.507977 second(s), Total 79, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号