21ic问答首页 - GD32F350的TIMER_CHx_ON无法输出
GD32F350的TIMER_CHx_ON无法输出
望雪心2022-06-09
测试过TIM2_CH3输出PWM是好用的,下面是InitTIM15_CH0_ON的初始化函数,并不能让PB6输出PWM
void InitTIM15_CH0_ON(void){
/* initialize GPIO */
rcu_periph_clock_enable(RCU_GPIOB); /*!< enable GPIOB clock */
gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_6); /*!< set PB6 mode to AF */
gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_MAX, GPIO_PIN_6); /*!< set PB6 options */
/* associate GPIO and TIMER */
gpio_af_set(GPIOB, GPIO_AF_2, GPIO_PIN_6); /*!< set PB6 mode to AF2(TIMER15_CH0_ON) */
/* initialize TIMER */
void initTimer15(void);
}
void initTimer15(void)
{
/* enable the TIMER15 clock */
rcu_periph_clock_enable(RCU_TIMER15);
/* clear para. of TIMER15 */
timer_deinit(TIMER15);
/* initialize TIMER15 freq = 108M/(215+1), duty = timer15_count0/1000, count = timer15_count0 + timer15_count1*/
timer_parameter_struct timer_initpara;
timer_initpara.prescaler = 215;
timer_initpara.alignedmode = TIMER_COUNTER_EDGE;
timer_initpara.counterdirection = TIMER_COUNTER_UP;
timer_initpara.period = 999;
timer_initpara.clockdivision = TIMER_CKDIV_DIV1;
timer_initpara.repetitioncounter = 0;
timer_init(TIMER15,&timer_initpara);
/* config timer output */
timer_oc_parameter_struct timer_ocinitpara;
timer_ocinitpara.outputstate = TIMER_CCX_DISABLE; /*!< disable TIMER_CHx */
timer_ocinitpara.outputnstate = TIMER_CCXN_ENABLE; /*!< enable TIMER_CHxN */
timer_ocinitpara.ocnpolarity = TIMER_OCN_POLARITY_LOW;
timer_ocinitpara.ocnidlestate = TIMER_OCN_IDLE_STATE_LOW;
timer_channel_output_config(TIMER15, TIMER_CH_0, &timer_ocinitpara);
//timer_auto_reload_shadow_enable(TIMER15);
timer_primary_output_config(TIMER15, ENABLE);
/* set TIMER_CHx PWM duty */
timer_channel_output_pulse_value_config(TIMER15, TIMER_CH_0,1000);
timer_channel_output_mode_config(TIMER15, TIMER_CH_0, TIMER_OC_MODE_PWM0);
timer_channel_output_shadow_config(TIMER15, TIMER_CH_0, TIMER_OC_SHADOW_DISABLE);
/* enable the TIMER15 */
timer_enable(TIMER15);
}
自动判断 中文中文(简体)中文(香港)中文(繁体)英语日语朝鲜语德语法语俄语泰语南非语阿拉伯语阿塞拜疆语比利时语保加利亚语加泰隆语捷克语威尔士语丹麦语第维埃语希腊语世界语西班牙语爱沙尼亚语巴士克语法斯语芬兰语法罗语加里西亚语古吉拉特语希伯来语印地语克罗地亚语匈牙利语亚美尼亚语印度尼西亚语冰岛语意大利语格鲁吉亚语哈萨克语卡纳拉语孔卡尼语吉尔吉斯语立陶宛语拉脱维亚语毛利语马其顿语蒙古语马拉地语马来语马耳他语挪威语(伯克梅尔)荷兰语北梭托语旁遮普语波兰语葡萄牙语克丘亚语罗马尼亚语梵文北萨摩斯语斯洛伐克语斯洛文尼亚语阿尔巴尼亚语瑞典语斯瓦希里语叙利亚语泰米尔语泰卢固语塔加路语茨瓦纳语土耳其语宗加语鞑靼语乌克兰语乌都语乌兹别克语越南语班图语祖鲁语 自动选择 中文中文(简体)中文(香港)中文(繁体)英语日语朝鲜语德语法语俄语泰语南非语阿拉伯语阿塞拜疆语比利时语保加利亚语加泰隆语捷克语威尔士语丹麦语第维埃语希腊语世界语西班牙语爱沙尼亚语巴士克语法斯语芬兰语法罗语加里西亚语古吉拉特语希伯来语印地语克罗地亚语匈牙利语亚美尼亚语印度尼西亚语冰岛语意大利语格鲁吉亚语哈萨克语卡纳拉语孔卡尼语吉尔吉斯语立陶宛语拉脱维亚语毛利语马其顿语蒙古语马拉地语马来语马耳他语挪威语(伯克梅尔)荷兰语北梭托语旁遮普语波兰语葡萄牙语克丘亚语罗马尼亚语梵文北萨摩斯语斯洛伐克语斯洛文尼亚语阿尔巴尼亚语瑞典语斯瓦希里语叙利亚语泰米尔语泰卢固语塔加路语茨瓦纳语土耳其语宗加语鞑靼语乌克兰语乌都语乌兹别克语越南语班图语祖鲁语 百度翻译 谷歌翻译 谷歌翻译(国内) 翻译 朗读 复制 正在查询,请稍候…… 重试 朗读 复制 复制 朗读 复制 来源 谷歌翻译(国内) 译
void InitTIM15_CH0_ON(void){
/* initialize GPIO */
rcu_periph_clock_enable(RCU_GPIOB); /*!< enable GPIOB clock */
gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_6); /*!< set PB6 mode to AF */
gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_MAX, GPIO_PIN_6); /*!< set PB6 options */
/* associate GPIO and TIMER */
gpio_af_set(GPIOB, GPIO_AF_2, GPIO_PIN_6); /*!< set PB6 mode to AF2(TIMER15_CH0_ON) */
/* initialize TIMER */
void initTimer15(void);
}
void initTimer15(void)
{
/* enable the TIMER15 clock */
rcu_periph_clock_enable(RCU_TIMER15);
/* clear para. of TIMER15 */
timer_deinit(TIMER15);
/* initialize TIMER15 freq = 108M/(215+1), duty = timer15_count0/1000, count = timer15_count0 + timer15_count1*/
timer_parameter_struct timer_initpara;
timer_initpara.prescaler = 215;
timer_initpara.alignedmode = TIMER_COUNTER_EDGE;
timer_initpara.counterdirection = TIMER_COUNTER_UP;
timer_initpara.period = 999;
timer_initpara.clockdivision = TIMER_CKDIV_DIV1;
timer_initpara.repetitioncounter = 0;
timer_init(TIMER15,&timer_initpara);
/* config timer output */
timer_oc_parameter_struct timer_ocinitpara;
timer_ocinitpara.outputstate = TIMER_CCX_DISABLE; /*!< disable TIMER_CHx */
timer_ocinitpara.outputnstate = TIMER_CCXN_ENABLE; /*!< enable TIMER_CHxN */
timer_ocinitpara.ocnpolarity = TIMER_OCN_POLARITY_LOW;
timer_ocinitpara.ocnidlestate = TIMER_OCN_IDLE_STATE_LOW;
timer_channel_output_config(TIMER15, TIMER_CH_0, &timer_ocinitpara);
//timer_auto_reload_shadow_enable(TIMER15);
timer_primary_output_config(TIMER15, ENABLE);
/* set TIMER_CHx PWM duty */
timer_channel_output_pulse_value_config(TIMER15, TIMER_CH_0,1000);
timer_channel_output_mode_config(TIMER15, TIMER_CH_0, TIMER_OC_MODE_PWM0);
timer_channel_output_shadow_config(TIMER15, TIMER_CH_0, TIMER_OC_SHADOW_DISABLE);
/* enable the TIMER15 */
timer_enable(TIMER15);
}
自动判断 中文中文(简体)中文(香港)中文(繁体)英语日语朝鲜语德语法语俄语泰语南非语阿拉伯语阿塞拜疆语比利时语保加利亚语加泰隆语捷克语威尔士语丹麦语第维埃语希腊语世界语西班牙语爱沙尼亚语巴士克语法斯语芬兰语法罗语加里西亚语古吉拉特语希伯来语印地语克罗地亚语匈牙利语亚美尼亚语印度尼西亚语冰岛语意大利语格鲁吉亚语哈萨克语卡纳拉语孔卡尼语吉尔吉斯语立陶宛语拉脱维亚语毛利语马其顿语蒙古语马拉地语马来语马耳他语挪威语(伯克梅尔)荷兰语北梭托语旁遮普语波兰语葡萄牙语克丘亚语罗马尼亚语梵文北萨摩斯语斯洛伐克语斯洛文尼亚语阿尔巴尼亚语瑞典语斯瓦希里语叙利亚语泰米尔语泰卢固语塔加路语茨瓦纳语土耳其语宗加语鞑靼语乌克兰语乌都语乌兹别克语越南语班图语祖鲁语 自动选择 中文中文(简体)中文(香港)中文(繁体)英语日语朝鲜语德语法语俄语泰语南非语阿拉伯语阿塞拜疆语比利时语保加利亚语加泰隆语捷克语威尔士语丹麦语第维埃语希腊语世界语西班牙语爱沙尼亚语巴士克语法斯语芬兰语法罗语加里西亚语古吉拉特语希伯来语印地语克罗地亚语匈牙利语亚美尼亚语印度尼西亚语冰岛语意大利语格鲁吉亚语哈萨克语卡纳拉语孔卡尼语吉尔吉斯语立陶宛语拉脱维亚语毛利语马其顿语蒙古语马拉地语马来语马耳他语挪威语(伯克梅尔)荷兰语北梭托语旁遮普语波兰语葡萄牙语克丘亚语罗马尼亚语梵文北萨摩斯语斯洛伐克语斯洛文尼亚语阿尔巴尼亚语瑞典语斯瓦希里语叙利亚语泰米尔语泰卢固语塔加路语茨瓦纳语土耳其语宗加语鞑靼语乌克兰语乌都语乌兹别克语越南语班图语祖鲁语 百度翻译 谷歌翻译 谷歌翻译(国内) 翻译 朗读 复制 正在查询,请稍候…… 重试 朗读 复制 复制 朗读 复制 来源 谷歌翻译(国内) 译
赞0
评论
2022-06-09
谢谢,已经解决了,代码除了函数调用的时候写成了 “void inittimer15(void);”外没有其他问题。 排查了一下午,人傻了,这个差别还是重写一遍以后找到的
赞0
GD32F303VET6
打开PWM后,严重干扰其他硬件的中断
已读
2022-7-4 14:17:17tb_1375949
UART接收中断被抢占,导致UART接收数据不完整
已读
2022-7-4 14:17:30tb_1375949
已经在批量出货,现在发现有这个问题
已读
2022-7-4 14:17:49tb_1375949
急需解决,客户那边非常关注这个问题
已读
gd32旗舰店:jerry2022-7-4 14:18:14
暂时没有这个支持
2022-7-4 14:18:26tb_1375949
啥意思
已读
评论
2022-07-04
赞0
评论
2022-07-04
赞0
评论
2022-07-04
赞0
评论
2022-07-04
赞0
评论
2022-07-04
赞0
评论
2022-07-04
赞0
评论
2022-07-04
您需要登录后才可以回复 登录 | 注册