• 2024-05-24STM32读取GPIO状态的代码优化
    最近看到新的读取GPIO状态引脚状态的代码伪代码如图:优势:读取消抖前第一次的GPIO状态,与引脚先前状态进行对比;如果电平状态一致则跳过延时消抖的流程,可以节约时间,减少裸机工作循环一轮所用时间​staticu8ReadIOPort(GPIO_TypeDef*GPIOx,u16PortNum,u8prePortStatus){
  • 2024-03-30测试
    编写驱动程序确定主设备号定义自己的file_operations结构体实现open/write/read等函数,填入file_operations结构体把file_operations结构体告诉内核:注册驱动程序register_chrdev(主设备号,次设备号,&file_operations)注册驱动程序时,需要调用一个入口函数卸载驱动程序,需要调
  • 2023-11-19按键控制灯的亮灭
    1.写两个按键的驱动文件2.进行按键引脚的初始化,注意这里是输入模式,设置为浮空输入3.再写一个按键检测函数//按键检测uint8_tKey_Scan(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin){ if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==1)//读取引脚的输入 { //松手检测,如果按着不
  • 2023-11-03stm32学习记录随笔23.11.3
    RCC外设时钟使能常用函数//标准库文件->stm32f10x_rcc.hvoidRCC_AHBPeriphClockCmd(uint32_tRCC_AHBPeriph,FunctionalStateNewState);//RCC_AHB外设时钟控制voidRCC_APB2PeriphClockCmd(uint32_tRCC_APB2Periph,FunctionalStateNewState);//RCC_APB2外设时钟控制void
  • 2023-09-30操作STM32的GPIO的步骤
    1.使用RCC开启GPIO的时钟2.使用GPIO_Init函数初始化GPIO3.使用输入/输出控制GPIO口RCC在library组中的 stm32f10x_rcc.h中找:(第一个参数是选择哪个外设,第二个参数是EABLE或者DISABLE)voidRCC_AHBPeriphClockCmd(uint32_tRCC_AHBPeriph,FunctionalStateNewStat
  • 2023-09-05按键控制灯的亮灭
    1.写两个按键的驱动文件2.进行按键引脚的初始化,注意这里是输入模式,设置为浮空输入3.再写一个按键检测函数//按键检测uint8_tKey_Scan(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin){ if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==1)//读取引脚的输入 { //松手检测,如果按着不放,则一
  • 2023-09-03STM32深入学习3:GPIO模块控制LED(寄存器版)
    GPIO模块数据手册详解:GPIO:通用输入/输出AFIO:备用输入/输出GPIOx_CRL和GPIOx_CRH:配置寄存器GPIOx_IDR和GPIOx_ODR:数据寄存器GPIOx_BSRR:置位/复位寄存器GPIOx_BRR:复位寄存器GPIOx_LCKR:锁定寄存器,锁定GPIO的数值GPIO模式:1.输入浮动:完全由外部决定2.输入上拉和输入下拉:存在
  • 2023-08-22STM32深入学习1:时钟系统和GPIO
    RCC(复位和时钟控制):系统复位的因素:1.NRST按键复位2.看门狗复位3.软件复位4.低功耗管理复位SYSCLK系统时钟: 1.HSI时钟2.HSE时钟:外部晶振3.PLL时钟  系统时钟:PCLK1:APB1分频,最大36mhz   PCLK2,ADC,TIM1,TIM8:APB2分频 初始化:相关知识:RCC相关寄存器:R
  • 2023-08-19CH32V003的输入/输出端口
    GPIO端口是处理器与外部设备打交道的基础,为了更好地应用它,下面就对CH32V003的通用输入输出端口(GPIO)的寄存器结构及用法做详细深入地讨论。CH32V003是一个32位的处理器,但它的GPIO端口并不是把32个引脚都引出来,而是根据芯片型号及其封装的不同,分别引出来了18个(CH32V003F4P6、CH32V00
  • 2023-08-16STM32学习记录1:GPIO配置
    GPIO按照ABC进行分组管理,每组GPIO都有自己独立的配置寄存器:GPIOX_CRL/GPIOx_CRH:输入输出模式配置GPIOx_IDR:数据输入GPIOx_ODR:数据输出 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);  //使能PD端口时钟 GPIO_InitTypeDef是GPIO的初始化结构使用IO口:1.使能
  • 2023-08-16GPIO寄存器及工作模式/F4
    GPIO寄存器(general-purposeI/Oport)(registers)GPIOportmoderegisterGPIOx_MODER端口模式MODERy[1:0]00:input//输入(默认)01:generalpurposeoutputmode//通用输出10:alternatefunctionmode//复用11:analogmode//模拟GPIOportoutputtyperegister GP
  • 2023-08-12GPIO
     通过编程读写相关寄存器。就可以实现对引脚的控制 先看两个32位的配置寄存器假设点亮某个LED灯,需要先设置端口配置高寄存器(GPIOx_CRH)(x=A..E)(配置成推挽输出) 这个配置就是GPIOC->CRH=0x00300000PS:输出速度一般按最低的就行,当然要求不高直接拉满对应的使用库函数为
  • 2023-05-21LED硬件基本知识
    首先我们都知道LED的基本操作,通过上拉或下拉电阻的方式实现LED的开关,这里不再介绍。那么怎么知道GPIO地址在那个位置1,也就是如何通过位操作来实现硬件的开关呢?IMX6ULL的GPIO操作方法GPIO的控制涉及4大模块:CCM、IOMUXC、GPIO模块本身,框图如下:GPIOx为GPIOgroup,里面包换不
  • 2023-02-23正点原子sys.h文档详解
    文档主体内容为位带的映射,目的是实现位带操作。第一部分:位带映射的宏函数1#defineBITBAND(addr,bitnum)((addr&0xF0000000)+0x2000000+((addr&0xFFFFF)<<5)+(bit
  • 2023-01-11从自定义的库函数到STM32官方标准库
      在​​上一节​​的基础上,进一步改写代码,再引入官方标注库函数。虽然官方标准库慢慢式微,有一些别的库可能会取代它,但是并不妨碍我们继续拿官方库来写代码,吸取里边好的写
  • 2022-12-28华大电子MCU-CIU32F011x3、CIU32F031x5通用输入输出
    11.通用输入输出(GPIO)11.1.模块介绍每组GPIO端口有四个32位配置寄存器(GPIOx_MODE,GPIOx_OTYPE,GPIOx_OSPEEDandGPIOx_PUPD),两个32位数据寄存器(GPIOx_IDAT
  • 2022-12-17关于共享资源保护的思考
    1、引言先聊聊分享这篇文章的原因,在使用STM32时,我发现对于GPIO输出操作,可以使用GPIOx_ODR寄存器,也可以使用GPIOx_BSRR寄存器。 对应的标准外设库API接口有voidGPIO_
  • 2022-12-11STM32标准库中GPIO_ReadInputData与GPIO_ReadInputDataBit的区别
    GPIO_ReadInputData读的是GPIOx的整个IDR寄存器的数据,返回一个十六位数,对应IDR寄存器的十六位。所以参数只用传入GPIOx。uint16_tGPIO_ReadInputData(GPIO_TypeDef*GP
  • 2022-10-31[单片机框架][bsp层][AT32F415][bsp_gpio] GPIO配置和使用
    6.1简介GPIO接口包括5组通用输入/输出端口。每个GPIO组提供16个通用输入/输出引脚;每个GPIO端口都有相关的控制和配置寄存器来满足特定的功能,GPIO引脚上的外部
  • 2022-08-16无线电
    GPIO输出写函数HAL_GPIO_WritePin(GPIOx,GPIO_Pin,PinState);GPIOx:GPIO端口,GPIOA~GPIOHGPIO_Pin:该端口对应的Pin脚数PinState:状态,GPIO_PIN_RESET和GPIO_PI