在官方例程中有一个DAC输出实验,本次实验是利用MM32F103开发板DAC输出(PA4)功能驱动D2发光LED模拟呼吸灯的实验。
一、实验资源
1、MM32F103开发板;
2、KEIL 5.25.2;
3、J-LINK V9;
4、新驱动力提供的开发例程;
二、实验过程
1、知识准备及硬件连接。"DAC"模块在STM32F103产品线上STM32F103RC以上器件才具有“DAC”功能,下面是RM0008中的截图:
在例程中通过跟踪发现了MM32F103片上"DAC"外设内存地址是与STM32F103一致的;
- #define APB1PERIPH_BASE PERIPH_BASE
- #define PERIPH_BASE ((uint32_t)0x40000000) /*!< SRAM base address in the bit-band region */
- #define DAC_BASE (APB1PERIPH_BASE + 0x7400)
复制代码
在MM32F103用户手册里并没有找到“DAC”字样,该地址为“保留”,但事实上有“存货”。
硬件上通过杜邦线将“PA4”与"D2"连接。
2、程序的实现。在例程中只对主函数进行了修改:
- int main(void)
- {
- unsigned int uiDACData=0;
- delay_init(); //延时函数初始化
- /*DAC通道1初始化,为单通道软件触发模式*/
- DAC_Channel_Single(DAC_Channel_1) ;
-
- while(1)//无限循环
- {
- for(uiDACData=4095; uiDACData>0; uiDACData--)
- {
- DAC_SoftwareTrigger_Data(DAC_Channel_1,uiDACData);
- delay_ms(1);
- }
-
- for(uiDACData=0; uiDACData<4095; uiDACData++)
- {
- DAC_SoftwareTrigger_Data(DAC_Channel_1,uiDACData);
- delay_ms(1);
- }
- }
- }
复制代码
3、实验现象。D2从暗->渐亮->亮->渐暗->暗。
三、实验总结。
本次实验只是测试了DAC其中的一个输出通道,下来要测试另一个输出通道(PA5)。具备DAC功能的MM32F103C8T6让用户多了一份选择。