//初始化IO模式:上拉/下拉输入。调用函数:
void KEY_Init(void) //IO初始化
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE);//使能PORTA,PORTE时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;//KEY0-KEY2
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入
GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化GPIOE2,3,4
}
// 扫描IO口电平(库函数/寄存器/位操作)。
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
#define KEY0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)//读取按键0
关键字:STM32 GPIO 初始化 输入引脚
引用地址:
STM32应用简章之GPIO初始化(输入引脚)
推荐阅读最新更新时间:2024-11-13 06:02
STM32开发笔记90: SX1268驱动程序设计(数据缓存)
单片机型号:STM32L053R8T6 本系列开发日志,将详述SX1268驱动程序的整个设计过程,本篇介绍数据缓存的相关驱动程序。 一、工作原理 二、接收模式的数据缓存 In receive mode RxBaseAddr specifies the buffer offset in memory at which the received packet payload data will be written. The buffer offset of the last byte written in receive mode is then stored in RxDataPointer which is init
[单片机]
STM32定时器做外部脉冲信号计数器用
简介:今天,尝试使用STM32的计数器的外部时钟功能,来对外部脉冲信号进行计数。效果还不错。 具体设置如下: /* TIM3_CH2 为脉冲输入口 1. 配置GPIO_GPIOA_PIN7 输入 2. 配置TIM3 计数器在TI2 端的上升沿计数: 1). TIMx_CCMR1: CC2S =01; 配置通道2检测TI2输入的上升沿 2). TIMx_CCMR1:IC2F =000; 选择输入滤波器带宽 3). TIMx_CCER: CC2P =0; 配置上升沿极性 √ 4). TIMx_SMCR: SMS =111; 选择定时器外部时钟模式1 5). TIMx_SMCR: TS =110; 选择TI2作为触发输入源 √
[单片机]
STM32--SYSTICK超简易定时器
上次的 定时器搞得我比较晕,勉强调通了程序,就实用主义来说应该算是勉强合格了。 当然CORTEX-M3独有的定时功能可是超级简单的 那就是SySTick,所谓的系统定时器.配置方式简单 简单的不能再简单,因为STM32 的库函数已经帮我们搞好了,只需要调用一个函数,就可以配 置系统时钟的频率和开启系统时钟的中断.呵呵....不过这么好用的定时器只有一个。 //SYSTICK 分频--1ms的系统时钟中断 if (SysTick_Config(SystemFrequency / 1000)) { /* Capture error */ while (1); } 就是这么简单,系统就会产生一个1MS 的系统时钟中断(如果除数是50
[单片机]
STM32开发笔记73: C++中子类调用父类同名函数的处理方法
单片机型号:STM32L053R8T6 1、问题 父类有1方法:Enable_RS485,如下所示: class CUart { public: uint8_t u8_UartNumber; //端口号1-8 uint32_t u32_BaudRate; //波特率 uint8_t u8_Parity; //效验位 CC0 C0; //485控制引脚C0 CC1 C1; //485控制引脚C1 UART_HandleTypeDef hUART; uint8_t u8_UartReceiveBuffer ; public: CUart(uint8_t u8_UartNumber, uint3
[单片机]
STM32 程序卡死在B. ENDP
问题: 程序卡死在startup文件中的此处 原因: 使能了中断(USART_ITConfig(UART5, USART_IT_TC, ENABLE); ),但是没有写中断入口函数(void UART5_IRQHandler(void)),中断进来找不到对应的中断入口函数,就会卡死在这里。 解决方法: 加上void UART5_IRQHandler(void)之后,程序正常运行。
[单片机]
stm32专题十四:存储器介绍
存储器通常分为易失性存储器(RAM - random access memory)和非易失性存储器(ROM - read only memory) 易失性存储器 SRAM:Static Random Access Memory(静态随机存储器),基本的存储单元由SR锁存器组成,不需要定时刷新。 DRAM:Dynamic Random Access Memory(静态随机存储器),由电容和晶体管组成,结构非常简单。动态随机存储器 DRAM 的存储单元以电容的电荷来表示数据,有电荷代表 1,无电荷代表 0。但时间一长,代表 1 的电容会放电,代表 0 的电容会吸收电荷,因此它需要定期刷新操作。刷新操
[单片机]
嵌入式设计:STM32自动量程电压表设计方案
方案中的整个系统可以用一块9V电池供电,实现了低功耗和便携功能。交流测量是用AD637真有效值转换芯片将交流信号转换成直流电压后测量;用带钳位保护的反向放大器进行输入电压转换,实现了10MΩ的输入阻抗和高安全性。电路中关键器件采用TI公司的精密运算放大器OPA07和仪表放大器INA128,实现了高精度的测量;ADC采用STM32f103ZET6片内自带的12位AD,实现了低功耗,量程自动切换功能。 0 引言 在智能仪器中,常常用到自动量程转换技术,这使得仪器在很短的时间内自动选取最合适的量程实现高精度的测量。自动量程的实现一般通过控制输入信号的衰减放大倍数实现,就电压表来说其输入测量电压会大于其AD 转换器的输入范围,所以
[单片机]
STM32中断优先级void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)
void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct) { u32 tmppriority = 0x00, tmpreg = 0x00, tmpmask = 0x00; u32 tmppre = 0, tmpsub = 0x0F; /* Check the parameters */ assert(IS_FUNCTIONAL_STATE(NVIC_InitStruct- NVIC_IRQChannelCmd)); assert(IS_NVIC_IRQ_CHANNEL(NVIC_InitStruct- NVIC_IRQChannel)); assert(IS_NVIC_PREE
[单片机]