gpio

LIS2MDL磁力计驱动

不问归期 提交于 2020-01-24 23:46:20
之前使用STM32的硬件IIC(基于HAL库)调试了ST的LIS2MDL磁力计,现将写的驱动文件记录下来,并分享给有需要的同学。 /* *********************************************************************************************** * LIS2MDL磁力计驱动 * * 实现LIS2MDL底层驱动 * * Filename : LIS2MDL.c * Version : V1.00 * Programmer(s) : FengDuo * *********************************************************************************************** */ #define LIS2MDL_MOUDLE //文件声明 /* *********************************************************************************************** * INCLUDE FILES ****************************************************************************************

十一、S3C2440 裸机 — GPIO

跟風遠走 提交于 2020-01-24 05:37:22
11.1 GPIO 介绍 11.1.1 GPIO 管脚 GPIO 即是输入输出端口,S3C2440A 包含了 130 个多功能输入/输出口引脚并且它们为如下显示的八个端口: 端口 A(GPA):25 位输出端口 端口 B(GPB):11 位输入/输出端口 端口 C(GPC):16 位输入/输出端口 端口 D(GPD):16 位输入/输出端口 端口 E(GPE):16 位输入/输出端口 端口 F(GPF):8 位输入/输出端口 端口 G(GPG):16 位输入/输出端口 端口 H(GPH):9 位输入/输出端口 端口 J(GPJ):13 位输入/输出端口 GPIO 的功能即是用于 CPU 采集外设信号(INPUT),CPU 输出控制信号(OUTPUT),还有一种功能称为管脚复用功能,即是 GPIO 用于其他信号功能,比如地址,串口等共呢个,GPIO 属于 SOC 的内部外设。 GPIO 的使用需要寄存器配置。 11.1.2 GPIO 寄存器 端口配置寄存器:GPACON --- GPJCON,即配置输入或是输出,还是配置为第三功能 端口数据寄存器:GPADAT---GPJDAT,用于数据的写入或读取 端口上拉寄存器:GPBUP---GPJUP,端口上拉寄存器控制每个端口组的使能/禁止上拉电阻。 当相应位为 0 时使能引脚的上拉电阻。当为 1 时禁止上拉电阻。 如果使能了上拉电阻

zynq--7z035 官方zynq开发板实现PL按键通过EMIO扩展到PS控制PL的LED

白昼怎懂夜的黑 提交于 2020-01-22 11:14:53
1、目标 本人参考的是正点原子的教学视频 https://www.bilibili.com/video/av78603756?p=13 zynq中FPGA与ARM的接口是EMIO,EMIO的主要的功能是PS通过PL扩展接口,控制PL上连上的设备。 2、实现过程 2.1添加工程 2.2 修改IO端口 为GPIO端口,并且添加EMIO端口 打开EMIO端口,配置成8个位端口: 2.3 对PL的端口进行链接 2.4 根据开发板芯片的手册 2.5 生成bit 到处硬件配置信息,然后启动sdk。 新建一个空的工程的项目。建立一个C语言的项目,加入如下main函数 /* * main.c * * Created on: 2020年1月21日 * Author: Scottar */ #include "stdio.h" #include "xparameters.h" #include "xgpiops.h" #define GPIO_DEVICE_ID XPAR_XGPIOPS_0_DEVICE_ID XGpioPs_Config *ConfigPtr; //结构体 共有两个参数,一个参数是id 一个是器件的及地址 XGpioPs Gpio; /* The driver instance for GPIO Device. */ #define EMIO_LED0 57 #define

STM32CubeMX学习--(1)GPIO控制

微笑、不失礼 提交于 2020-01-22 07:44:41
工程配置 基础配置 芯片选型 :STM32F429VGT6 晶振:16M 选择时钟源:System Core -> RCC -> High Speed Clock -> Crystal/Ceramic Resonator。 采用外部16M晶振提供时钟信号。 选择调试接口:System Core -> SYS -> Debug -> Serial Wire。 采用2线SWD接口调试。 配置时钟树: - Input:16,选择HSE - M:8 - N:168 - P:2 - AHB:/1 - HCLK:168 - APB1:/4 - APB2:/2 - PCLK1:x2 - PCLK2:x2 配置工程位置,选择开发工具MDK,设置堆栈:0x2000 0x4000。 到此,基础配置完成,点击GENERATE CODE即可生成代码工程文件。 GPIO功能设置 选择IO设置为输出输入模式,并编写IO名称。 PB0 设置为输出模式,名称LED_STP。 PB12 设置为输入模式,名称为IN1。 配置GPIO属性。 System Core ->GPIO中对对应IO进行配置上拉,速度等相关参数。配置完成后即可生成代码。 添加用户程序 CUBE生成的代码中已经对相关外设进行了初始化,但是并没有使用逻辑程序,需要用户自行添加对应的程序。需要注意的是,添加用户程序时需要在BEGAIN到END之间添加

STM32 PC13 配置成GPIO

只谈情不闲聊 提交于 2020-01-21 05:37:01
CUBE_MX 5.21版本 RTC 设置 Activate Clock Source 选中 RTC OUT 选 No RTC Output 然后生成的代码PC13可做GPIO. 来源: CSDN 作者: yahyaHa 链接: https://blog.csdn.net/yahyaHa/article/details/103818140

STM32103ZET6 寄存器

纵饮孤独 提交于 2020-01-20 01:35:03
STM32103ZET6每组GPIO端口有7组寄存器 每组GPIO端口的寄存器共7个 【 GPIOx_CRL :端口配置低寄存器 GPIOx_CRH:端口配置高寄存器 GPIOx_IDR:端口输入寄存器 GPIOx_ODR:端口输出寄存器 GPIOx_BSRR:端口位设置/清除寄存器 GPIOx_BRR :端口位清除寄存器 GPIOx_LCKR:端口配置锁存寄存器 】 PS :每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问(不允许半字或字节访问) 。所有IO口都可以作为中断输入。 GPIO端口基本结构 两个32位配置寄存器(GPIOx_CRL ,GPIOx_CRH) 选择I/O模式 每组GPIO有16个IO口,每个IO口需要4位来控制,这4位分成两部分,每部分2位,低2 位的部分用于选择输入或输出、选择速度,高2位的部分用于选择输入或输出的模式 GPIOx_CRL用于控制低8个IO口 (例GPIOA_CRL控制PA0-PA7,GPIOx_CRH用于控制高8个IO口(例GPIOA_CRH控制PA8-PA15) 端口输入数据寄存器( GPIOx_IDR ) 读取I/O口电平 端口输出数据寄存器 ( GPIOx_ODR ) 控制I/O口输出 端口位设置/清除寄存器(GPIOx_BSRR) 间接地设置ODR来控制端口输出 端口位清除寄存器(GPIOx_BRR)

【STM32 HAL库学习】一、HAL库中GPIO初始化中指针和结构体理解

主宰稳场 提交于 2020-01-19 01:44:59
一、封装总线和外设基地址 # define FLASH_BASE 0x08000000UL /*!< FLASH(up to 1 MB) */ # define PERIPH_BASE 0x40000000UL /*!< Peripheral base address in the alias region */ /*!< Peripheral memory map */ # define APB1PERIPH_BASE PERIPH_BASE # define APB2PERIPH_BASE (PERIPH_BASE + 0x00010000UL) # define AHB1PERIPH_BASE (PERIPH_BASE + 0x00020000UL) # define AHB2PERIPH_BASE (PERIPH_BASE + 0x10000000UL) /*!< AHB1 peripherals */ # define GPIOA_BASE (AHB1PERIPH_BASE + 0x0000UL) # define GPIOB_BASE (AHB1PERIPH_BASE + 0x0400UL) # define GPIOC_BASE (AHB1PERIPH_BASE + 0x0800UL) # define GPIOD_BASE (AHB1PERIPH_BASE +

Linux下操作GPIO

自作多情 提交于 2020-01-19 00:09:37
背景 嵌入式Linux下需要经常操作GPIO管脚,其中一种方式是使用/sys/文件系统下内核暴露出来的gpio文件。 代码 # include <stdio.h> # include <string.h> # include <stdlib.h> # include <termios.h> # include <sys/time.h> # include <sys/types.h> # include <unistd.h> # include <sys/stat.h> # include <fcntl.h> int set_gpio_val ( int gpio , int val ) { int fd = - 1 ; char buf [ 64 ] = { 0 } ; /* export */ fd = open ( "/sys/class/gpio/export" , O_WRONLY ) ; if ( fd < 0 ) { printf ( "/sys/class/gpio/export open error\n" ) ; return - 1 ; } sprintf ( buf , "%d" , gpio ) ; write ( fd , buf , 3 ) ; close ( fd ) ; /* set direction: in or out */ memset (

am335x嵌入式开发-GPIO操作

限于喜欢 提交于 2020-01-18 03:41:48
原创v4bot 最后发布于2016-02-20 14:11:57。 GPIO编号: GPIO的所有操作都是基于编号的,可以说编号是一个GPIO的ID,TI AM335x系列处理器GPIO的编号规则如下: pin_num=bank_num∗32+pin_bank_numpin_num=bank_num∗32+pin_bank_num pin_num=GPIO编号pin_num=GPIO编号 bank_num=GPIO块编号bank_num=GPIO块编号 pin_bank_num=GPIO在GPIO块中的子编号pin_bank_num=GPIO在GPIO块中的子编号 AM335x系列SOC有4个bank,每个bank有32个GPIO,一共支持 32∗4=12832∗4=128 个GPIO,GPIO的bank表示方法为: bank0[0:31] bank1[0:31] bank2[0:31] bank3[0:31]。例如芯片上有一个pin为gpio2_3, 则这个pin的GPIO编号为:number=2∗32+3=67 将GPIO映射到sysfs文件系统: # echo 67 > /sys/class/gpio/export 设置GPIO模式(设置为IO口模式): # echo "7" > /sys/class/gpio/gpio67/mode 设置GPIO方向(输入或输出): #

STM32与FPGA进行SPI通信

假装没事ソ 提交于 2020-01-17 23:42:11
一、器件 32单片机:STM32F407ZG FPGA :EP4CE6E22C8N 二、通信方式 STM32作为主机(软件); FPGA作为从机; SPI通信方式为0; 三、STM32源代码 1 #include "delay.h" 2 #include "stm32f4xx.h" 3 4 #ifndef __SPI_H 5 #define __SPI_H 6 7 #define SPI1_SCK PBout(2) 8 #define SPI1_MOSI PBout(3) 9 #define SPI1_MISO PBin(4) 10 #define CS PBout(5) 11 12 //CPOL=0,CPHA=0 13 u8 SOFT_SPI_RW(u8 byte); 14 //SPI初始化 15 void SPIInit(void); 16 17 #endif spi.h 1 #include "spi.h" 2 #include "delay.h" 3 #include "stm32f4xx.h" 4 5 //CPOL=0,CPHA=0 6 u8 SOFT_SPI_RW(u8 byte) 7 { 8 u8 i; 9 u8 Temp=0; //接收数据存储 10 SPI1_SCK = 0; 11 delay_init(168); //初始化延时函数 12 for(i=0;i<8