You are on page 1of 4

中断处理程序

概述
程序使用了两个中断处理函数——“DMA1_Channel1_IRQHandler”和
“EXTI0_IRQHandler”。前者检测 DMA 被占满时发出的中断“DMA1_IT_TC1”,当检测到
该中断标志时停止 ADC 采样,开发板发送接收到的 4096 个采样值,并在发送完毕后恢复
ADC 采样。由于开发板是单线程工作的,通过这种方式可以有效避免因同时进行采样和发
送而造成的采样率下降。后者检测外部按键中断,当按键按下后开发板停止工作,按键再
次按下后继续工作。

详述
中断部分主要由陈毅程负责,包含了数据发送中断和按键中断
1 中断处理函数“DMA1_Channel1_IRQHandler”

采用了先采样再将 4096 个数据集中发送的模式,当发送完毕后重新采样,新的采样值会覆


盖原有的采样值,并在存储空间满后再次集中发送。因此波形能够做到实时更新,且相比
得到一个采样值就立马发送的方案采样频率更高。
“DMA1_IT_TC1”中断在“DMA_Tx_Init”初始化函数中进行了配置,相应代码如下:

编写了“USART_SendString”,“my_itoa”等函数来代替“printf”函数,从而大大提高了传输
效率。相应代码如下:
2 中断处理函数“EXTI0_IRQHandler”

添加了防抖处理。接收到按键中断后延时 150ms,避免因按键抖动导致清除中断标志位后
该中断重新出现,引起函数的误退出。
按键中断初始化函数“EXTI0_INT_INIT”

PA0 端口设置为上拉输入,将其与 Key 端口相连。Key 端口平时为高电平,当按键按下时


会变为低电平。当 PA0 捕获到 Key 端口的下降沿后,开发板产生 EXTI 中断,从而进入中
断处理函数“EXTI0_IRQHandler”

测试结果:开发板正常发送数据,同时采样结果与同时采样与发送相比精度更高。当按下
按键后,开发板既不采样也不发送数据,进入等待状态,再次按下按键开发板继续工作。
PCB 图:
陈毅程

You might also like