C8T6C,的PWM输出

这篇博客详细介绍了如何在STM32微控制器上配置系统时钟、初始化GPIO和TIM2定时器,以及启用SWJ重映射。接着,通过LL_TIM_OC_SetCompareCH2、LL_TIM_OC_SetCompareCH3和LL_TIM_OC_SetCompareCH4函数设置了PWM通道的比较值,并实现了PWM值的动态调整。此外,还使用LL_mDelay函数实现了延时功能。
摘要由CSDN通过智能技术生成

LL_GPIO_AF_EnableRemap_SWJ();

/* USER CODE BEGIN Init */

/* USER CODE END Init */

/* Configure the system clock */
SystemClock_Config();

/* USER CODE BEGIN SysInit */

/* USER CODE END SysInit */

/* Initialize all configured peripherals /
MX_GPIO_Init();
MX_TIM2_Init();
/
USER CODE BEGIN 2 */

LL_TIM_CC_EnableChannel(TIM2, LL_TIM_CHANNEL_CH2);  //使能引脚
LL_TIM_CC_EnableChannel(TIM2, LL_TIM_CHANNEL_CH3);
LL_TIM_CC_EnableChannel(TIM2, LL_TIM_CHANNEL_CH4);
LL_TIM_EnableCounter(TIM2);    定时器使能

/* USER CODE END 2 */

/* Infinite loop /
/
USER CODE BEGIN WHILE /
while (1)
{
/
USER CODE END WHILE */

LL_TIM_OC_SetCompareCH2(TIM2 ,pwm_val+=10 );
	LL_TIM_OC_SetCompareCH3(TIM2 ,pwm_val);
	LL_TIM_OC_SetCompareCH4(TIM2 ,pwm_val);
	LL_mDelay(2);
	if(pwm_val>1000)
	while (pwm_val-=10){
	LL_TIM_OC_SetCompareCH2(TIM2 ,pwm_val );
	LL_TIM_OC_SetCompareCH3(TIM2 ,pwm_val);
	LL_TIM_OC_SetCompareCH4(TIM2 ,pwm_val);
	LL_mDelay(5);	
	}
/* USER CODE BEGIN 3 */

}
/* USER CODE END 3 */
}

gd32f103c8t6是一款基于ARM Cortex-M3内核的微控制器,它具有丰富的外设和功能,可以用于各种应用场景。要输出PWM信号,可以使用该芯片上的定时器和通道来实现。 以下是一种常见的方法来配置gd32f103c8t6输出PWM信号: 1. 配置定时器: 首先,选择一个可用的定时器,并配置它的工作模式和时钟源。可以使用定时器2、3、4或5来生成PWM信号。 2. 配置通道: 选择一个可用的通道,并配置它的工作模式和输出极性。每个定时器都有多个通道可供选择。 3. 配置PWM参数: 设置PWM的周期和占空比。周期决定了PWM信号的频率,而占空比决定了高电平和低电平的时间比例。 4. 启动定时器: 启动定时器以开始生成PWM信号。 下面是一个示例代码片段,展示了如何在gd32f103c8t6上配置定时器2通道1来输出PWM信号: ```c #include "gd32f10x.h" void pwm_init(void) { /* 使能定时器2的时钟 */ rcu_periph_clock_enable(RCU_TIMER2); /* 配置定时器2工作模式为PWM模式1 */ timer_mode_config(TIMER2, TIMER_OC_MODE_PWM1); /* 配置定时器2通道1的输出极性为高电平 */ timer_channel_output_pulse_value_config(TIMER2, TIMER_CH_1, 0); /* 配置定时器2通道1的输出比较模式为PWM模式 */ timer_channel_output_mode_config(TIMER2, TIMER_CH_1, TIMER_OC_MODE_PWM1); /* 配置定时器2通道1的输出比较值,决定了占空比 */ timer_channel_output_pulse_value_config(TIMER2, TIMER_CH_1, 1000); /* 配置定时器2的重载值,决定了PWM信号的周期 */ timer_autoreload_value_config(TIMER2, 2000); /* 使能定时器2通道1的输出 */ timer_channel_output_state_config(TIMER2, TIMER_CH_1, ENABLE); /* 使能定时器2 */ timer_enable(TIMER2); } int main(void) { /* 初始化PWM */ pwm_init(); while (1) { /* 主循环中可以进行其他操作 */ } } ``` 这是一个简单的示例,你可以根据具体需求进行更详细的配置和调整。希望对你有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值