STM32-GPIO及EXTI初始化详解
更新时间:2024-06-14 17:31:01 阅读量: 综合文库 文档下载
- stm32 gpio推荐度:
- 相关推荐
STM32-GPIO及EXTI初始化详解
void EXTI_Configuration(void); //定义IO中断初始化函数
EXTI_Configuration();//IO中断初始化函数调用简单应用: //中断设置
void EXTI_Configuration(void) {
EXTI_InitTypeDef EXTI_InitStructure; //EXTI初始化结构定义
EXTI_ClearITPendingBit(EXTI_LINE_KEY_BUTTON);//清除中断标志
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource3);//管脚选择 GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource4); GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource5); GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource6);
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//事件选择 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//触发模式 EXTI_InitStructure.EXTI_Line = EXTI_Line3 | EXTI_Line4; //线路选择 EXTI_InitStructure.EXTI_LineCmd = ENABLE;//启动中断 EXTI_Init(&EXTI_InitStructure);//初始化 }
//RCC初始化函数中开启I/O时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);
//GPIO初始化函数中定义输入I/O管脚。 //IO输入,GPIOA的4脚输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入 GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化 //在NVIC的初始化函数里面增加以下代码打开相关中断:
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel; //通道 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//占先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //响应级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //启动
NVIC_Init(&NVIC_InitStructure); //初始化
/*******************************************************************************
设置GPIO基本参数
*******************************************************************************/
void GPIO_Configuration(void) {
GPIO_InitTypeDef GPIO_InitStructure;
//根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4| GPIO_Pin_5 ; //设置的IO为pin4与pin5
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /* GPIO_Speed 描述 GPIO_Speed_10MHz 最高输出速率10MHz GPIO_Speed_2MHz 最高输出速率2MHz GPIO_Speed_50MHz 最高输出速率50MHz */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING ; /*
GPIO_Speed 描述 GPIO_Mode_AIN 模拟输入 GPIO_Mode_IN_FLOATING 浮空输入
GPIO_Mode_IPD 下拉输入 GPIO_Mode_IPU 上拉输入 GPIO_Mode_Out_OD 开漏输出 GPIO_Mode_Out_PP 推挽输出
GPIO_Mode_AF_OD 复用开漏输出
GPIO_Mode_AF_PP 复用推挽输出通常有5种方式使用某个引脚功能, 它们的配置方式如下: 1)作为普通GPIO输入:
根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入, 同时不要使能该引脚对应的所有复用功能模块。 2)作为普通GPIO输出:
根据需要配置该引脚为推挽输出或开漏输出,同时不要使能该引 脚对应的所有复用功能模块。 3)作为普通模拟输入:
配置该引脚为模拟输入模式,同时不要使能该引脚对应的所有 复用功能模块。
4)作为内置外设的输入:
根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入, 同时使能该引脚对应的某个复用功能模块。 5)作为内置外设的输出:
根据需要配置该引脚为复用推挽输出或复用开漏输出,同时使能
该引脚对应的所有复用功能模块。1、模拟输入模式下,是用于AD输入时输入模拟
量,此时施密特触
发器输入关闭,施密特触发器输出为0. 2、下拉输入:打开内部下拉电阻 3、上拉输入:打开内部上拉电阻
4、浮空输入 :这个输入模式,输入电平必须由外部电路确定, 要根据具体电路,加外部上拉电阻或下拉电阻。
5、推挽输出:可以输出高,低电平,连接数字器件。推挽式输出输出电阻 小,带负载能力强。
6、开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要 上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强 (一般20ma以内).能驱动大电流和大电压。LED就使用这种模式 7、复用是指该引脚打开remap功能。*/
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource4); EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line=EXTI_Line4;
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd=ENABLE; EXTI_Init(&EXTI_InitStructure);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource5); EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line=EXTI_Line5;
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStructure); }
/*GPIO常使用的几条函数
GPIO_ReadInputDataBit 读取指定端口管脚的输入 u8 ReadValue;
ReadValue = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_7); 使用setbits 与resetbits 是比较简单,其实还是可以使用 其它函数。例如可以使用GPIO_WriteBit
GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_SET);
GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_RESET);对于好像流水灯呀这些一个整段IO,可以使用
GPIO_Write(GPIOA, 0x1101);GPIO_EXTILineConfig 选择GPIO管脚用作外部中断线路
GPIO_EXTILineConfig(GPIO_PortSource_GPIOB, GPIO_PinSource8);*/
电压驱动的如:场效应管,因为它的内阻很大,加电压控制时电流很小,近似为零,所以可以理解成:电压驱动;??电流驱动的如:普通的NPN、PNP型三极管,因为它的内阻较小,加电压控制时电流相对较大(一般小功率的都有100uA以上,大功率的可达20mA以上),所以可以理解成:电压驱动;????从控制原理来说:电压驱动的如:场效应管,它是通过加到G、S端的电压(微观的就是电场)来控制D、S内部通道的宽窄(即通道可变)来控制D、S两端电流;??电流驱动的如:普通的NPN、PNP型三极管,是通过加到B、E端的电流(微观的就是电子的流动)来控制C、E内部的电流流动(即通道不变)。
数字器件,输入输出为高、低电平的两种状态。
模拟器件的信号是连续的,不是只有高、低电平两种状态。
正在阅读:
STM32-GPIO及EXTI初始化详解06-14
超标准洪水的方案-初稿12-03
实验室安全知识竞赛题06-25
五年级品社第二单元第二课01-25
福州大学二八年成人高等学历教育03-08
行政权力事项实施清单8605-21
五年级健康教育备课05-14
外国文学题库新答案 203-19
14个非常实用和通用的人力资源招聘流程图09-03
我与春天有个约会作文500字06-29
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 初始化
- 详解
- GPIO
- EXTI
- STM
- 32
- 大学物理试题第四章 冲量和动量
- 2018年中国控制技术市场现状调研与发展前景分析报告目录
- 重庆市居民委员会选举办法
- 高考政治知识点:社会主义市场经济
- 浅谈新形势下如何加强监狱基层党支部建设
- 护理程序练习题
- 2013年研究生入学考试英语二真题及答案解析
- 《社会保障概论》复习资料
- 高中论文:化学课堂开展探究性实验教学的实践
- 19世纪末20世纪初英国法国美国德国等欧洲国家的现代主义设计的对
- 语文基础全套复习资料(有他足够了
- 中国化学会第24届全国高中学生化学竞赛(省级赛区)试题、标准答
- 本科成本会计
- 钢结构生产制造部各岗位职责及任职要求
- 对H企业应收账款管理与核算现状的调查报告
- 快递行业同业竞争对手调查报告
- “十三五”重点项目-牦牛骨髓粉项目节能评估报告(节能专篇)
- NOIP2015浙江省复赛普及组成绩
- 长虹公司的应收账款管理
- 华师大版七年级科学(生物)下册5.1《种群和群落》导学案(含答