2879|4

2933

帖子

4

TA的资源

五彩晶圆(中级)

楼主
 

谁知道GD32的输入如捕获功能如何初始化 [复制链接]

下面的代码是我依照网上的资料编写的GD32F303CBT6的输入捕获功能,使用的是PA0,和TIME4_CH0,PA0引脚已经输入1KHZ的50%的信号。

#include "gd32f30x.h"
#include "gd32f303c_start.h"
#include "systick.h"


void timer_config4(void);
/*!
    \brief      main function
    \param[in]  none
    \param[out] none
    \retval     none
*/

int main(void)
{
    /* configure systick */
    systick_config();
    
    /* enable the LEDs GPIO clock */
    rcu_periph_clock_enable(RCU_GPIOB);
    /* configure LED1 LED2 GPIO port */
    gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_1);
    /*Configure PA0(TIMER4_CH0) as alternate function*/
	  gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_0);
		timer_config4();
    /* reset LED1 LED2 GPIO pin */
    gpio_bit_reset(GPIOB, GPIO_PIN_1);

    while(1){

        gpio_bit_set(GPIOB, GPIO_PIN_1);
        delay_1ms(1000);
        gpio_bit_reset(GPIOB, GPIO_PIN_1);
        delay_1ms(1000);
    }
}

/**
    \brief      configure the TIMER peripheral
    \param[in]  none
    \param[out] none
    \retval     none
  */
void timer_config4(void)
{
    
	  
	  /* TIMER1 configuration: generate PWM signals with different duty cycles:
       TIMER1CLK = SystemCoreClock / 120 = 1MHz */
    timer_ic_parameter_struct timer_icinitpara;
    timer_parameter_struct timer_initpara;

		/* connect IRC40K clock to the TIMER4_CH3 input for calibration */
		//rcu_periph_clock_enable(RCU_AF);
		//gpio_pin_remap_config(GPIO_TIMER4CH3_IREMAP, ENABLE);
		rcu_periph_clock_enable(RCU_TIMER4);
		timer_deinit(TIMER4);
	
	  nvic_priority_group_set(NVIC_PRIGROUP_PRE1_SUB3);
    nvic_irq_enable(TIMER4_IRQn, 1, 1);     
		/* initialize TIMER init parameter struct */
		timer_struct_para_init(&timer_initpara);
		/* TIMER4 configuration */
		timer_initpara.prescaler = 71;
		timer_initpara.alignedmode = TIMER_COUNTER_EDGE;
		timer_initpara.counterdirection = TIMER_COUNTER_UP;
		timer_initpara.period = 0xFFFF;
		timer_initpara.clockdivision = TIMER_CKDIV_DIV1;
		timer_init(TIMER4, &timer_initpara);

		/* TIMER4 configuration */
		/* initialize TIMER channel input parameter struct */
		timer_channel_input_struct_para_init(&timer_icinitpara);
		/* TIMER4 CH3 input capture configuration */
		timer_icinitpara.icpolarity = TIMER_IC_POLARITY_FALLING;
		timer_icinitpara.icselection = TIMER_IC_SELECTION_DIRECTTI;
		timer_icinitpara.icprescaler = TIMER_IC_PSC_DIV1;
		timer_icinitpara.icfilter = 0x0;
		timer_input_capture_config(TIMER4, TIMER_CH_0, &timer_icinitpara);
		
		
		/* auto-reload preload enable */
		timer_auto_reload_shadow_enable(TIMER4);
		/* clear channel 3 interrupt bit */
		//timer_interrupt_flag_clear(TIMER4, TIMER_INT_FLAG_CH0);
		timer_interrupt_flag_clear(TIMER4, TIMER_INT_CH0);
		/* channel 3 interrupt enable */
		timer_interrupt_enable(TIMER4, TIMER_INT_CH0);
		/* TIMER4 counter enable */
		timer_enable(TIMER4);

}

中断代码


void TIMER4_IRQHandler(void)
{
		 if(SET == timer_interrupt_flag_get(TIMER4, TIMER_INT_CH0)){
			 /* clear channel 3 interrupt bit */
			 timer_interrupt_flag_clear(TIMER4, TIMER_INT_CH0);
			 timer_capture_num++;
		 if(1 == timer_capture_num){
					/* get the input capture value */
					timer_capture1 = timer_channel_capture_value_register_read(TIMER4,TIMER_CH_0);
		 }else if(2 == timer_capture_num){
					/* get the input capture value */
					timer_capture2 = timer_channel_capture_value_register_read(TIMER4,TIMER_CH_0);
					/* end capture, disable TIMER4 and CH3 interrupt */
					timer_interrupt_disable(TIMER4, TIMER_INT_CH0);
					timer_disable(TIMER4);
				}
		 }
}

该程序运行后就是无法进入中断,请做过的高手指点一下。

 

此帖出自GD32 MCU论坛

最新回复

rcu_periph_clock_enable(RCU_AF);AF功能使能了吗?   详情 回复 发表于 2022-11-4 09:04
点赞 关注
 

回复
举报

1

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

从代码上看是没有开启中断

此帖出自GD32 MCU论坛

点评

你好,请问是什么中断,整个系统的中断已经开启了。  nvic_priority_group_set(NVIC_PRIGROUP_PRE1_SUB3);  nvic_irq_enable(TIMER4_IRQn, 1, 1);  TIME4的中断也已经开了    详情 回复 发表于 2022-11-3 17:41
 
 
 

回复

2933

帖子

4

TA的资源

五彩晶圆(中级)

板凳
 
恩佐法拉利 发表于 2022-11-3 17:36 从代码上看是没有开启中断

你好,请问是什么中断,整个系统的中断已经开启了。

 nvic_priority_group_set(NVIC_PRIGROUP_PRE1_SUB3);
 nvic_irq_enable(TIMER4_IRQn, 1, 1); 

TIME4的中断也已经开了

 

此帖出自GD32 MCU论坛
 
 
 

回复

6960

帖子

11

TA的资源

版主

4
 

官方已经有例程的吧。

此帖出自GD32 MCU论坛
 
 
 

回复

6450

帖子

9

TA的资源

版主

5
 

rcu_periph_clock_enable(RCU_AF);AF功能使能了吗?

此帖出自GD32 MCU论坛
 
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
推荐:读大学究竟为了什么 电子书

5781 还不错,没事可以看看!

谁可以仔细讲一讲51单片机复位电路的工作原理 ?

谁可以仔细讲一讲51单片机复位电路的工作原理 ?

09年全国电子设计大赛题目下载网站

为保证届时题目下载顺利进行,全国竞赛组委会秘书处定于2009年7月16日(周四)上午8:30开始,在上述八个网站上载竞赛模拟题目(2 ...

【赛题大汇总】(5.23更新)2011全国各省市、高校“电子设计”选拔赛、校内赛题目汇总

本帖最后由 paulhyde 于 2014-9-15 02:58 编辑

24Cxx 系列EEPROM通用程序及应用(STM32 应用函数文件)

(论坛到现在对chrome的支持还是非常不好,上传附件失败以及把排版弄乱等,使得我不得不编辑了好几次,幸好还不是用lin ...

SimpleLink无晶振无线MCU助您轻松实现无晶体化

半导体行业的创新往往是在现有产品的基础上加以改进,但在设计方面则追求“少即是多”的理念。在德州仪器,我们研究 ...

求助一下这张图稍微详细一点的解析

496947这张图是关于噪声的讲解,频域这边的图看不明白,左上角那个图个人觉得应该是这样的496948;还有频谱密度曲线是怎么通过上 ...

有奖直播|网络研讨会-高速接口测试:PCIe5.0测试方案

随着处理器技术发展,个人计算机以及工作服务器,在互连网领域对高速数据传输质量要求的与日俱增,采用差分信号进行串行通信的 P ...

AD在PCB里连接引脚然后再更新到原理图有什么好的办法吗?

我有一块引脚比较多的芯片,为了方便走线我想在PCB里把外设的引脚和它连接,然后再更新到原理图里。比如主芯片U1,和U2连接,U2 ...

【玄铁杯第三届RISC-V应用创新大赛】Lichee PI 4A 之编译ncnn&测试simplepose demo

本帖最后由 小默叔叔 于 2023-12-6 20:18 编辑 # 【玄铁杯第三届RISC-V应用创新大赛】Lichee PI 4A 之编译ncnn&测试simplepos ...

关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表