Ngã thị tự học đích tân thủ, na vị lão sư giải đáp cáp GD32f310c8 Timre15 phối trí đan thông đạo PWM phối trí na lí hữu vấn đề chỉ điểm cáp tạ tạ
void timer_config(void)
{
// PB8 cụ hữu TIMER15 đích thông đạo 0 công năng
timer_parameter_struct Timer_ParamType;
timer_oc_parameter_struct Timer_OC_ParamType;
rcu_periph_clock_enable(RCU_GPIOB);// khải dụng ngoại thiết thời chung công năng
rcu_periph_clock_enable(RCU_TIMER15);
gpio_af_set(GPIOB,GPIO_AF_2,GPIO_PIN_8);// đoan khẩu phục dụng vi TIMER15_CH0 mô thức
gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_8);
gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_8);
gpio_bit_set(GPIOB, GPIO_PIN_8);
timer_internal_clock_config(TIMER15);
timer_deinit(TIMER15);
timer_channel_output_mode_config(TIMER15,TIMER_CH_0,TIMER_OC_MODE_PWM0);
timer_auto_reload_shadow_enable(TIMER15);
Timer_OC_ParamType.ocidlestate = TIMER_OC_IDLE_STATE_HIGH;// không nhàn thời thông đạo thâu xuất cực tính
Timer_OC_ParamType.ocnidlestate = TIMER_OCN_IDLE_STATE_LOW;// không nhàn thời hỗ bổ thông đạo thâu xuất cực tính
Timer_OC_ParamType.ocnpolarity = TIMER_OCN_POLARITY_HIGH;// hỗ bổ thông đạo thâu xuất cực tính
Timer_OC_ParamType.ocpolarity = TIMER_OC_POLARITY_HIGH;// thông đạo thâu xuất cực tính
Timer_OC_ParamType.outputnstate = TIMER_CCXN_DISABLE;// cấm dụng hỗ bổ thông đạo thâu xuất
Timer_OC_ParamType.outputstate = TIMER_CCX_ENABLE;// sử năng thông đạo thâu xuất
timer_channel_output_config(TIMER15,TIMER_CH_0,&Timer_OC_ParamType);
Timer_ParamType.alignedmode = TIMER_COUNTER_EDGE;// phối trí vi biên duyên đối kỳ mô thức
Timer_ParamType.clockdivision = TIMER_CKDIV_DIV2;// phối trí tử khu thời gian hòa thải dạng thời chung ( DTS ) chi gian đích phân tần hệ sổ
Timer_ParamType.counterdirection = TIMER_COUNTER_UP;// phối trí kế sổ phương hướng vi hướng thượng kế sổ
Timer_ParamType.period = 1000-1;// chu kỳ
Timer_ParamType.prescaler = 72-1;// dự phân tần
Timer_ParamType.repetitioncounter = 1;
timer_init(TIMER15,&Timer_ParamType);
timer_channel_output_pulse_value_config(TIMER15, TIMER_CH_0, 500-1);// bỉ giác ký tồn khí đích sổ trị
timer_enable(TIMER15);
}
int main(void)
{
int16_t i = 0;
FlagStatus breathe_flag = SET;
/* configure the GPIO ports */
gpio_config();
/* configure the TIMER peripheral */
timer_config();
/* configure systick */
systick_config();
while (1){
/* delay a time in milliseconds */
delay_1ms(2);
if (SET == breathe_flag){
i = i + 10;
}else{
i = i - 10;
}
if(500 < i){
breathe_flag = RESET;
}
if(0 >= i){
breathe_flag = SET;
}
/* configure TIMER channel output pulse value */
timer_channel_output_pulse_value_config(TIMER15,TIMER_CH_0,i);
}
}
GD32f310c8 Timre13 giá dạng phối trí thị khả dĩ đích,
|