|
Pinout设置见截图23_4_1。Parameter settings和其他设置见图23_4_2~3。其他的默认设置即可。导出工程文件。 本例模拟输出锯齿波。先设置变量: uint8_t ch=0xAb,dac1=0x10,dac2;$ t% ^% `4 }, \+ o0 j S 自定义函数声明中添加:- E/ y+ W6 ~% @$ H1 m$ h. c- m void dacTest(void);( [8 j) F2 [' M& N+ R1 ] 在main中前边添加: MX_DAC_Init(); 和7 F6 ~8 G4 h7 M, v. z/ ]4 D2 V. G1 | HAL_DAC_SetValue(&hdac,DAC_CHANNEL_1,DAC_ALIGN_8B_R,0xFF); HAL_DAC_SetValue(&hdac,DAC_CHANNEL_2,DAC_ALIGN_8B_R,0xFF); HAL_DAC_Start(&hdac,DAC_CHANNEL_1);& s; x8 E$ Y7 h HAL_DAC_Start(&hdac,DAC_CHANNEL_2);4 {- m0 Z) w# x$ r1 e; } 修改printf语句为:% O5 v: S" K4 d/ l7 t0 L9 R4 r printf("ADC1=%4d ADC2=%4d ADC3=%4d DAC1=%3d,DAC2=%3d \n\r", adcx[0],adcx[1],adcx[2],dac1,dac2);8 K1 Y8 B( p- M4 a7 {, z 在循环中添加:7 a O" C' s$ D' D1 g( O dacTest(); 最后在main后边添加: //DacTest void dacTest(void){ if(dac1<0xFE)dac1++;else dac1=0x01;//PA_4,5 dac1++;dac2=0xFF-dac1;7 x$ u( |/ D# U HAL_DAC_SetValue(&hdac,DAC_CHANNEL_1,DAC_ALIGN_8B_R,dac1);* @' g$ x1 j2 I HAL_DAC_SetValue(&hdac,DAC_CHANNEL_2,DAC_ALIGN_8B_R,dac2); } 因为DAT1,DAT2位互补输出,链接一只双向发光二极管,结果见照片23_4_4,波形见照片23_4_5。串口数据见图23_4_6。8 Y d7 j5 D# g. a u 7 G4 I+ ` `) C/ k# H0 C" d3 Q |
23-4
23-4
23-4
23-4
23-4
23-4
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
【福利三:雨露均沾·逢7狂欢】之五:STM32系统时钟PLL故障排除1例
【福利三:雨露均沾·逢7狂欢】之三:AI帮我查BUG
福利三:雨露均沾·逢7狂欢】之二:STM32F407VG串口通信乱码故障的排除
基于STM32F103的I2C主从机通信
OpenBLT移植到STM32F103战舰开发板上适用于所有STM32F103系列的Bootloader
TFT LCD 与 FSMC 的硬件连接大容量 STM32F10xxx FSMC 接口
单片机:初学者该了解的STM32F103基础知识
2025软件工具兔哥知道
STM32之继电器模块
微信公众号
手机版