打印
[ARM入门]

基于AT32F403ZGT6的外部中断实验

[复制链接]
944|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一、AT32F403ZGT6 start板
AT32F403 系列 技术手册
2018.03.19 第 1  頁 版本 1.00
基于ARM ® 32位的Cortex ® -M4F微控制器+FPU,带256 K字节至1024 K
字节内部闪存、USB、CAN、18个定时器、3个ADC、16个通信接口
功能
  内核:带有FPU 的ARM®32 位的Cortex®-M4F
CPU
− 最高200 MHz工作频率,带存储器保护
单元(MPU) ,内建单周期乘法和硬件除

− 内建浮点运算(FPU)
− 具有DSP指令集
  存储器
− 从256 K字节至1024 K字节的内部闪存
程序/数据存储器
− SPIM接口:额外提供高达16 M字节外部
SPI闪存程序数据存储器接口
− 高达96+128 K字节的SRAM
− 带4個片選外部存储器控制器(XMC)。支
持CF卡、SRAM、PSRAM、NOR和
NAND存储器
− 并行LCD接口,兼容8080/6800模式
  时 钟、复位和电源管理
− 2.6至3.6伏供电和I/O引脚
− 上电/断电复位(POR/PDR)、可编程电压
监测器(PVD)
− 4至16 MHz晶体振荡器
− 内嵌经出厂调校的8 MHz的RC振荡器
(25 °C 1 %精度, 全温度2.5 %精度)
− 内嵌带校准的40 kHz的RC振荡器
− 带校准功能为RTC的32 kHz振荡器
  低功耗
− 睡眠、停机和待机模式
− VBAT为RTC和后备寄存器供电
 3 个12 位A/D 转换器,0.5 μs 转换时间( 多达21
个输入通道)
− 转换范围:0至3.6 V
− 三组采样和保持功能
− 温度传感器
 2 个12 位D/A 转换器
 DMA :12 通道DMA 控制器
− 支持的外设:定时器、ADC、DAC、
SDIO、I2S、SPI、I2C和USART
  调试模式
− 串行单线调试(SWD)和JTAG接口
− Cortex®-M4F内嵌跟踪模块(ETM TM )
  多达112 个快速I/O 端口
− 36/51/80/112个多功能双向的I/O口,所
有I/O口可以映像到16个外部中断;几乎
所有端口均可容忍5V输入信号
  多达18 个定时器
− 多达8个16位定时器+2个32位定时器,
每个定时器有多达4个用于输入捕获/输
出比较/PWM或脉冲计数的通道和增量编
码器输入
− 多达3个16位带死区控制和紧急刹车,用
于电机控制的PWM高级控制定时器
− 2个看门狗定时器(独立的和窗口型的)
− 系统时间定时器:24位自减型计数器
− 2个16位基本定时器用于驱动DAC
  多达16 个通信接口
− 多达3个I2C接口(支持SMBus/PMBus)
− 多达5个USART接口(支持ISO7816,
LIN,IrDA接口和调制解调控制)
− 多达4个SPI接口(50 M位/秒),4个均可
复用为I2S接口
− CAN接口(2.0B主动)
− USB2.0全速接口
− 多达2个SDIO接口
 CRC 计算单元,96 位的芯片唯一代码
  封装
− LQFP144 20 x 20 mm
− LQFP100 14 x 14 mm
− LQFP64 10 x 10 mm
− LQFP48 7 x 7 mm
  选型列表
内部闪存存储器 型号
256 K字节
AT32F403CCT6, AT32F403RCT6,
AT32F403VCT6, AT32F403ZCT6
512 K字节
AT32F403CET6, AT32F403RET6,
AT32F403VET6, AT32F403ZET6
1024 K字节
AT32F403CGT6, AT32F403RGT6,
AT32F403VGT6, AT32F403ZGT6

二、外部中断实验
(1)原理图

(2)实验程序
#include "exti.h"


void my_exti_config(void)
{
        GPIO_InitType GPIO_InitStructure;
        NVIC_InitType NVIC_InitStructure;
        EXTI_InitType EXTI_InitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_AFIO,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_GPIOA,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_GPIOC,ENABLE);
       
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinsSource0);
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinsSource13);
       
        GPIO_InitStructure.GPIO_MaxSpeed=GPIO_MaxSpeed_50MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_PD;
        GPIO_InitStructure.GPIO_Pins=GPIO_Pins_0;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_MaxSpeed=GPIO_MaxSpeed_50MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_PD;
        GPIO_InitStructure.GPIO_Pins=GPIO_Pins_13;
        GPIO_Init(GPIOC,&GPIO_InitStructure);
       
        EXTI_InitStructure.EXTI_Line=EXTI_Line0|EXTI_Line13;
        EXTI_InitStructure.EXTI_LineEnable=ENABLE;
        EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
        EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising;
        EXTI_Init(&EXTI_InitStructure);
       
        EXTI_ClearFlag(EXTI_Line0);
        EXTI_ClearFlag(EXTI_Line13);
       
        NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
        NVIC_Init(&NVIC_InitStructure);
       
        NVIC_InitStructure.NVIC_IRQChannel=EXTI15_10_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;
        NVIC_Init(&NVIC_InitStructure);
}

void EXTI0_IRQHandler(void)
{
        if(EXTI_GetIntStatus(EXTI_Line0))
        {
                led1=!led1;
        }
        EXTI_ClearFlag(EXTI_Line0);
}



//void EXTI15_10_IRQHandler(void)
//{
//        if(EXTI_GetIntStatus(EXTI_Line13))
//        {
//                led1=!led1;
//        }
//        EXTI_ClearFlag(EXTI_Line13);
//}
(3)、结果
通过外部中断实验触发实现LED翻转,按键按下,LED亮,按键再次按下,LED熄灭


使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

67

主题

1964

帖子

15

粉丝