基于GD32F303RCT6芯片 通过DAC实现呼吸灯 用C语言写一份代码
时间: 2024-05-20 12:18:13 浏览: 171
#include "gd32f30x.h"
#define LED_PIN GPIO_PIN_13
#define LED_PORT GPIOC
void DAC_Config(void);
void GPIO_Config(void);
int main(void)
{
DAC_Config();
GPIO_Config();
uint32_t i = 0;
uint32_t dir = 1;
uint16_t dac_value = 0;
while(1)
{
dac_value += dir;
if(dac_value == 0xFFF)
{
dir = -1;
}
else if(dac_value == 0x000)
{
dir = 1;
}
DAC_DHR12R1 = dac_value; // 设置DAC输出值
for(i = 0; i < 10000; i++); // 延时
}
}
void DAC_Config(void)
{
/* 使能DAC时钟 */
rcu_periph_clock_enable(RCU_DAC);
/* 配置DAC通道1 */
dac_trigger_disable(DAC0, DAC_CH_1); // 禁止DAC触发
dac_wave_mode_config(DAC0, DAC_CH_1, DAC_TRIANGLE_WAVE); // 配置DAC三角波模式
dac_output_buffer_enable(DAC0, DAC_CH_1); // 使能DAC输出缓冲区
dac_enable(DAC0, DAC_CH_1); // 使能DAC通道1
}
void GPIO_Config(void)
{
/* 使能GPIOC时钟 */
rcu_periph_clock_enable(RCU_GPIOC);
/* 配置PC13为推挽输出 */
gpio_init(LED_PORT, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, LED_PIN);
}
阅读全文