#include"stm32f10x.h"voidEXTI0_IRQHandler(void){if(EXTI_GetITStatus(EXTI_Line0)!=RESET){/* 处理中断事件 *//* 关闭中断 */EXTI_ClearITPendingBit(EXTI_Line0);}}intmain(){/* 使能GPIO引脚和EXTI线 */GPIO_InitTypeDef GPIO_InitStructure;EXTI_InitTypeDef EXTI_InitStructure;/* 配置GPIO引脚 */RCC...
1、EXTI_Configuration.c#include "stm32f10x.h" // Device headervoidEXTI_Configuration(void){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//开启APB2的外设时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//开启AFIO的外设时钟,EXTI和NVIC的时钟是一直开启,故不需要开启时钟GPIO_InitTyp...
GPIO_Init(KEY1_EXTI_GPIO_PORT, &GPIO_InitStructure); 2初始化EXTI用于产生中断/事件 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); GPIO_EXTILineConfig(GPIOX,GPIO_Pin_X);//选择端口和对应GPIO EXTI_InitStruct.EXTI_Line=KEY1_EXTI_LINE; EXTI_InitStruct.EXTI_Mode= EXTI_Mode_Interrupt;//两...
4、引脚:EOC为End of Convert即转换结束信号;START是开始转换,给一个输入脉冲;CLOCK是ADC时钟,因为ADC内部是一步一步进行判断的,需要时钟来推动这个过程;下面的VREF+和VREF-是DAC的参考电压,比如给DAC个数据255,是对应5V还是3.3V就由参考电压决定,DAC的参考电压也决定了ADC的输入范围,所以也是ADC的参考电压;Vcc与...
外部触发:转换可以由外部事件触发(例如定时器捕获、EXTI线)。事件(event)和中断(interrupt)是不同的,外部中断线配置为事件模式时,中断请求寄存器是不会被置位的,仅仅是通过脉冲发生器产生一个脉冲。 void ADC_Configuration(void) { /* 开启GPIO、ADC1时钟 */ RCC_ADCCLKConfig(RCC_PCLK2_Div2); //PCLK2进行...
③ADC电源电路 为了提高转换精度,STM32的ADC配有独立的电源接口,方便进行单独的滤波。ADC的工作电源使用VDDA引脚输入,使用VSSA作为独立的地连接,VREF引脚则为ADC提供测量使用的参考电压。 STM32低功耗模式 很多单片机都有低功耗模式,STM32F4 也不例外 ,运行状态下的 HCLK 为CPU提供时钟,内核执行程序代码。当 CPU 不...
(引脚电平触发中断,申请中断,让CPU执行中断函数)/事件响应(这个其实是STM32对外部中断增加的一种额外的功能,当外部中断检测到引脚电平变化时,正常的流程是选择触发中断,但是在STM32中,也可以选择触发一个事件,如果选择触发事件,那外部中断的信号就不会通向CPU了,不会触发中断,而是触发别的外设操作,比如触发ADC转换...
ADC = Analog to Digital Converter,模数转换器。EXTI = EXTernal Interrupt/event,外部口线中断/事件控制器。
五、SPI的配置。SPI1作为主设备,负责从ADC器件读取结果到RAM。SPI2模拟ADC器件的从设备,负责发送ADC结果给主设备。我这里启用了SPI1收、发的DMA传输,并且DMA发送使用EXTI2事件做同步。另外我也启用了SPI2的DMA发送功能。这里重点关注下SPI1发送功能的DMA配置。