- 2024-09-06STM32学习笔记——GPIO
GPIO——GeneralPurposeInputOutput——通用输入输出出口特点:通用性、快速翻转、中断支持、支持多种工作模式。8种输入输出模式模式性质特征应用标识浮空输入数字输入可读取引脚电平,若引脚悬空,则电平不确定适用于需要读取外部信号的场景,但外部信号状态
- 2024-09-04ARM微处理器编程模型与linux驱动开发
文章目录微处理器指令系统数据类型字节对符号位扩展ARM体系结构ARM处理器工作模式寄存器异常过程调用标准程序内存划分STM32的使用常用资源GPIO口的使用GPIO固件库的使用STM固件库Proteus常用元器件中断AD转换BootLoader的定制:嵌入式
- 2024-08-31STM32GPIO操作底层解析
我们使用HAL和标准库时,常常忽略他两的底层,只知道怎么用不知其原理,其实是大忌,因为底层丢了代码的灵魂就丢了,对以后的Linux开发不利常用的指令函数:voidGPIO_WriteBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,BitActionBitVal){/*Checktheparameters*/assert_p
- 2024-08-28STM32 GPIO 寄存器的配置
32位配置寄存器:GPIOx_CRL,GPIOx_CRH32位数据寄存器:GPIOx_IDR,GPIOx_ODR32位置位/复位寄存器:GPIOx_BSRR16位复位寄存器:GPIOx_BRR32位锁定寄存器:GPIOx_LCKRGPIO寄存器详解CRL和CRH控制IO口,是四个位控制一个口,所以要两个32位的来控制16个口CRL32位端口配置低寄存器(GPIOx_
- 2024-08-19ARM体系架构
ARM体系架构1.指令系统RISC:精简指令集指令系统 --ARM 寻址方式:寻址方式比较少(10种以内) 指令集中指令的条数:100条左右 大的、统一的寄存器文件; 装载/保存结构(Load/Store),数据处理操作只针对寄存器的内容,而不直接对存储器进行操作; 统一
- 2024-07-237.22笔记
规定引脚TX发送RX接收SLC时钟 SDA数据SCLK时钟 MOSI主机输出数据 MISO主机输入数据 CS片选(用于指定通信对象)CAN_HCAN_L 差分数据脚(用两个引脚表示一个差分数据)DPDM差分数据脚全双工(FullDuplex)通信允许数据同时在两个方向上传输,即在一个通信链
- 2024-07-08这一篇让你更了解GPIO_Init()函数,了解CNF和MODE是如何配置输入输出模式,GPIOX_CR端口配置寄存器的使用,芯片出厂IO是浮空输入
1GPIO初始化配置函数 GPIO_Init(GPIOC,&GPIOInitStruct); 1.1 正常的初始化函数代码1.2解读GPIO_Init(GPIOC,&GPIOInitStruct); 所以GPIOC的地址为 0x40000000+0x00010000+0x00001000=0x40011000STM32F103C8T6通用与复用功能I/O(GPIO与AFIO)、
- 2024-07-08STM32标准库函数功能简介————GPIO篇
1.void GPIO_DeInit (GPIO_TypeDef*GPIOx);函数解释:将指定的GPIO端口恢复到默认设置。2.voidGPIO_AFIODeInit(void);函数解释:将外设映射设置恢复为默认状态,以重新初始化外设映射配置。3.voidGPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct);函数
- 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_