你好。是否有使用ADC中断的例子?
你好Kostakis,
我并不完全确定,但如果你看到了亚军文件boot_vectors.s.您可以看到它出口导出adc_handler [弱]
导出adc_handler [弱]
void adc_handler(void){uint16_t转换= getword16(gp_adc_result_reg);//用转换做些东西,也许传递给其他功能等......setword16(gp_adc_clear_int_reg,0x0000);//我认为应该清除中断}
nvic_setpriority(ADC_IRQN,2);nvic_enableirq(ADC_IRQN);
adc_init(gp_adc_se,0,gp_adc_attn3x);//单一结束的3x extentuation,例如setbits16(gp_adc_ctrl_reg,gp_adc_mint,1);//重要或以其他方式中断将被屏蔽
setBits16(gp_adc_ctrl_reg,gp_adc_start,1);
我并不完全确定是否缺少某些东西/不完整。也许您应该在执行处理程序函数时禁用ADC中断。
谢谢!
我想使用相同的方法。你能告诉我什么是gp_adc_clk_sel和如何设置它?我尝试了上面的代码,它不会产生任何中断。
请帮帮我。
谢谢Bharath.
嗨bharath,
上面提到的步骤是正确的,并且应该触发中断,确保您为指定的中断启用了NVIC,并确保SetBits16(GP_ADC_CTRL_REG,GP_ADC_MINT,1)启用中断,调用启用在拍摄测量之前的中断,这应该触发中断。
谢谢mt_dialog.
它只触发一次中断。为什么不重复?如何以特定的速度重复?
您必须在每次想要进行测量时立即启动ADC转换,ADC没有免费运行。如果您检查580数据表,则会看到转换后的GP_ADC_START寄存器翻转到0,中断位设置。
你好Kostakis,
我并不完全确定,但如果你看到了亚军文件boot_vectors.s.您可以看到它出口
导出adc_handler [弱]void adc_handler(void){
uint16_t转换= getword16(gp_adc_result_reg);
//用转换做些东西,也许传递给其他功能等......
setword16(gp_adc_clear_int_reg,0x0000);//我认为应该清除中断
}
nvic_setpriority(ADC_IRQN,2);
nvic_enableirq(ADC_IRQN);
adc_init(gp_adc_se,0,gp_adc_attn3x);//单一结束的3x extentuation,例如
setbits16(gp_adc_ctrl_reg,gp_adc_mint,1);//重要或以其他方式中断将被屏蔽
setBits16(gp_adc_ctrl_reg,gp_adc_start,1);
我并不完全确定是否缺少某些东西/不完整。也许您应该在执行处理程序函数时禁用ADC中断。
谢谢!
我想使用相同的方法。
你能告诉我什么是gp_adc_clk_sel和如何设置它?
我尝试了上面的代码,它不会产生任何中断。
请帮帮我。
谢谢
Bharath.
嗨bharath,
上面提到的步骤是正确的,并且应该触发中断,确保您为指定的中断启用了NVIC,并确保SetBits16(GP_ADC_CTRL_REG,GP_ADC_MINT,1)启用中断,调用启用在拍摄测量之前的中断,这应该触发中断。
谢谢mt_dialog.
它只触发一次中断。为什么不重复?
如何以特定的速度重复?
谢谢
Bharath.
嗨bharath,
您必须在每次想要进行测量时立即启动ADC转换,ADC没有免费运行。如果您检查580数据表,则会看到转换后的GP_ADC_START寄存器翻转到0,中断位设置。
谢谢mt_dialog.