打印

GD32f310c8 Timre15 phối trí vấn đề

[ phục chế liên tiếp ]
447|8
Thủ cơ khán thiếp
Tảo miêu nhị duy mã
Tùy thời tùy địa thủ cơ cân thiếp
跳转到指定楼层
Lâu chủ
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,

Tương quan thiếp tử

Sa phát
Trách cảm giác lão ca nhĩ thị bất thị phát thác bản khối liễu, giá cá bản khối cổ kế năng cấp nhĩ giải đáp vấn đề đích ứng cai ngận thiếu liễu.
Bình luận
LKHZGD 2024-9-14 20:48 Hồi phục TA
Nga. Khả năng thị, một chú ý, tạ tạ
Bản đắng
Căn cư nâm đề cung đích đại mã, phối trí đan thông đạo PWM đích bộ phân khán khởi lai thị chính xác đích. Đãn thị, nâm đề đáo sử dụng đích thị GD32f310c8 Timre15, nhi bất thị Timre13. Thỉnh xác bảo nâm sử dụng đích thị chính xác đích tâm phiến hình hào hòa định thời khí. Như quả nâm nhưng nhiên ngộ đáo vấn đề, thỉnh kiểm tra dĩ hạ kỉ điểm:

Xác bảo nâm đích ngạnh kiện liên tiếp chính xác, đặc biệt thị PB8 dẫn cước thị phủ liên tiếp đáo TIMER15 đích thông đạo 0.
Kiểm tra nâm đích khai phát hoàn cảnh thị phủ chính xác phối trí, bao quát biên dịch khí, khố văn kiện đẳng.
Kiểm tra nâm đích đại mã thị phủ hữu kỳ tha thác ngộ, lệ như biến lượng loại hình bất thất phối, hàm sổ điều dụng thác ngộ đẳng.
Như quả vấn đề nhưng nhiên tồn tại, kiến nghị nâm tra duyệt GD32F310C8 đích sổ cư thủ sách dĩ hoạch thủ canh đa quan vu định thời khí phối trí đích tín tức, hoặc giả tại tương quan luận đàn hoặc xã khu tầm cầu bang trợ
Địa bản
```c
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;

// khải dụng GPIOB hòa TIMER15 đích ngoại thiết thời chung công năng
rcu_periph_clock_enable(RCU_GPIOB);
rcu_periph_clock_enable(RCU_TIMER15);

// tương PB8 đoan khẩu phục dụng vi TIMER15_CH0 mô thức
gpio_af_set(GPIOB,GPIO_AF_2,GPIO_PIN_8);

// phối trí PB8 vi phục dụng công năng, thâu xuất mô thức, vô thượng hạ lạp, tốc độ vi 50MHz
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);

// phối trí TIMER15 đích nội bộ thời chung
timer_internal_clock_config(TIMER15);
// phục vị TIMER15
timer_deinit(TIMER15);

// phối trí TIMER15 đích thông đạo 0 vi PWM mô thức
timer_channel_output_mode_config(TIMER15,TIMER_CH_0,TIMER_OC_MODE_PWM0);
// sử năng TIMER15 đích tự động trọng trang tái ảnh tử ký tồn khí
timer_auto_reload_shadow_enable(TIMER15);

// phối trí TIMER15 đích thông đạo 0 thâu xuất tham sổ
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 vi cao điện bì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 vi đê điện bình
Timer_OC_ParamType.ocnpolarity = TIMER_OCN_POLARITY_HIGH; // hỗ bổ thông đạo thâu xuất cực tính vi cao điện bình
Timer_OC_ParamType.ocpolarity = TIMER_OC_POLARITY_HIGH; // thông đạo thâu xuất cực tính vi cao điện bì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);

// phối trí TIMER15 đích tham sổ
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ỳ vi 999
Timer_ParamType.prescaler = 72-1; // dự phân tần hệ sổ vi 71
Timer_ParamType.repetitioncounter = 1;
timer_init(TIMER15,&Timer_ParamType);

// phối trí TIMER15 đích thông đạo 0 thâu xuất mạch trùng trị
timer_channel_output_pulse_value_config(TIMER15, TIMER_CH_0, 500-1); // bỉ giác ký tồn khí đích sổ trị vi 499

// sử năng TIMER15
timer_enable(TIMER15);
}
```
5Lâu
```c
int main(void) // chủ hàm sổ nhập khẩu
{
int16_t i = 0; // định nghĩa nhất cá 16 vị chỉnh sổ biến lượng i tịnh sơ thủy hóa vi 0
FlagStatus breathe_flag = SET; // định nghĩa nhất cá tiêu chí vị breathe_flag tịnh thiết trí vi SET

/* configure the GPIO ports */ // phối trí GPIO đoan khẩu
gpio_config();

/* configure the TIMER peripheral */ // phối trí định thời khí ngoại thiết
timer_config();

/* configure systick */ // phối trí hệ thống tích đáp định thời khí
systick_config();

while (1){ // vô hạn tuần hoàn
/* delay a time in milliseconds */ // diên thời 2 hào miểu
delay_1ms(2);
if (SET == breathe_flag){ // như quả breathe_flag vi SET
i = i + 10; // i tăng gia 10
}else{
i = i - 10; // i giảm thiếu 10
}
if(500 < i){ // như quả i đại vu 500
breathe_flag = RESET; // tương breathe_flag thiết trí vi RESET
}
if(0 >= i){ // như quả i tiểu vu đẳng vu 0
breathe_flag = SET; // tương breathe_flag thiết trí vi SET
}
/* configure TIMER channel output pulse value */ // phối trí định thời khí thông đạo thâu xuất mạch trùng trị
timer_channel_output_pulse_value_config(TIMER15,TIMER_CH_0,i);
}
}
```
6Lâu
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);
7Lâu
Giá đoạn đại mã thị dụng vu phối trí GPIOB đích đệ 8 cá dẫn cước ( GPIO_PIN_8 ) vi TIMER15_CH0 mô thức. Cụ thể bộ sậu như hạ:

1. Sử dụng `gpio_af_set(GPIOB, GPIO_AF_2, GPIO_PIN_8)` tương GPIOB đích đệ 8 cá dẫn cước phục dụng vi TIMER15_CH0 mô thức. Giá lí đích `GPIO_AF_2` biểu kỳ phục dụng đích ngoại thiết công năng vi TIMER15 đích thông đạo 0.

2. Sử dụng `gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_8)` thiết trí GPIOB đích đệ 8 cá dẫn cước đích mô thức vi phục dụng công năng mô thức ( GPIO_MODE_AF ), thượng lạp hạ lạp điện trở thiết trí vi vô ( GPIO_PUPD_NONE ).

3. Sử dụng `gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_8)` thiết trí GPIOB đích đệ 8 cá dẫn cước đích thâu xuất loại hình vi thôi vãn thâu xuất ( GPIO_OTYPE_PP ), thâu xuất tốc độ vi 50MHz ( GPIO_OSPEED_50MHZ ).

4. Sử dụng `gpio_bit_set(GPIOB, GPIO_PIN_8)` tương GPIOB đích đệ 8 cá dẫn cước thiết trí vi cao điện bình.

Một hữu báo thác tín tức, khán hạ ngạnh kiện liên tiếp.
8Lâu
yuanshenqi| | 2024-9-16 16:12 | Chỉ khán cai tác giả
3333333
发新帖 我要提问
Nâm nhu yếu đăng lục hậu tài khả dĩ hồi thiếpĐăng lục|Chú sách

Bổn bản tích phân quy tắc

6

Chủ đề

14

Thiếp tử

0

Phấn ti