寄存器版本代码-定时器计时
- //DAC通道1输出初始化
- void Dac1_Init(void)
- {
- RCC->APB2ENR|=1<<2; //使能PORTA时钟
- RCC->APB1ENR|=1<<29; //使能DAC时钟
-
- GPIOA->CRL&=0XFFF0FFFF;
- GPIOA->CRL|=0X00000000;//PA4 模拟输入
- DAC->CR|=1<<0; //使能DAC1
- DAC->CR|=1<<1; //DAC1输出缓存不使能 BOFF1=1
- DAC->CR|=1<<2; //使用出发功能TEN1=1
- DAC->CR|=1<<5; //DAC TIM2 TRGO,不过要TEN1=1
- DAC->CR|=0<<6; //不使用波形发生器
- DAC->CR|=0<<8; //屏蔽幅值设置
- DAC->CR|=1<<12; //DAC1 DMA使能 因为我用到DMA搬运数据
- DAC->DHR12R1=0;
- }
- //定时器初始化
- void TIM2_DAC1_Init(u16 arr,u16 psc)
- {
-
- RCC->APB1ENR|=1<<0; //TIM2时钟使能
- TIM2->ARR=arr; //自动重装载值
- TIM2->PSC=psc; //预分频系数
- TIM2->CR2|=2<<4; //选择更新事件作为触发输出
- TIM2->CR1|=0x01; //使能定时器2
-
- }
- //改变频率,重新计时
- void TIM2_DAC_REINIT(u16 hz)//¸改变频率
- {
- u16 arr;
- arr = 72000000/(hz * 256); // 通过hz改变重装载值
- TIM2->CR1|=0x00; //关闭定时器2
- TIM2->ARR=arr; //自动重装载值
- TIM2->CR1|=0x01; //使能定时器2
- }
|