gpio

OLED 屏幕显示

雨燕双飞 提交于 2020-02-06 03:13:11
实验描述: ALIENTEK OLED模块的控制器是SSD1306,本章,通过STM32来控制该模块显示字符和数字。代码通过SPI与OLED 屏幕相连 OLED 简介: OLED,即有机发光二极管(OrganicLight-EmittingDiode),又称为有机电激光显示(OrganicElectroluminesenceDisplay,OELD)。OLED由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。 SPI: 串口模式使用的信号线有如下几条:CS:OLED片选信号。RST(RES):硬复位OLED。DC:命令/数据标志(0,读写命令;1,读写数据)。SCLK:串行时钟线。在4线串行模式下,D0信号线作为串行时钟线SCLK。SDIN:串行数据线。在4线串行模式下,D1信号线作为串行数据线SDIN。模块的D2需要悬空,其他引脚可以接到GND。在4线串行模式下,只能往模块写数据而不能读数据。在4线SPI模式下,每个数据长度均为8位,在SCLK的上升沿,数据从SDIN移入到SSD1306,并且是高位在前的。DC线还是用作命令/数据的标志线。 相关设置步骤如下: 1

using wiringPi2-python (non root) segmentation fault catching for GPIO

孤街醉人 提交于 2020-02-05 09:09:02
问题 i'm using wiringPi2-python to switch a raspberry GPIO pin from low to high and back. Everything works BUT right after it switches the pin's value a Segmentation fault is thrown and the program stops. I need to use this approach because this seems to be the only way to access the GPIO pins without sudo before starting the program i need to setup the pins to output and export them so: $ echo 17 > /sys/class/gpio/export $ echo out > /sys/class/gpio/gpio17/direction and then a bit of python shell

using wiringPi2-python (non root) segmentation fault catching for GPIO

廉价感情. 提交于 2020-02-05 09:04:29
问题 i'm using wiringPi2-python to switch a raspberry GPIO pin from low to high and back. Everything works BUT right after it switches the pin's value a Segmentation fault is thrown and the program stops. I need to use this approach because this seems to be the only way to access the GPIO pins without sudo before starting the program i need to setup the pins to output and export them so: $ echo 17 > /sys/class/gpio/export $ echo out > /sys/class/gpio/gpio17/direction and then a bit of python shell

using wiringPi2-python (non root) segmentation fault catching for GPIO

雨燕双飞 提交于 2020-02-05 09:04:08
问题 i'm using wiringPi2-python to switch a raspberry GPIO pin from low to high and back. Everything works BUT right after it switches the pin's value a Segmentation fault is thrown and the program stops. I need to use this approach because this seems to be the only way to access the GPIO pins without sudo before starting the program i need to setup the pins to output and export them so: $ echo 17 > /sys/class/gpio/export $ echo out > /sys/class/gpio/gpio17/direction and then a bit of python shell

HT32F5232学习之点亮LED

删除回忆录丶 提交于 2020-02-04 20:48:58
因为疫情的原因,今年在家实在是太无聊了,突然想起自己去年报名参加了个合泰杯比赛,本人也是菜鸟一个,之前从未接触过合泰的单片机,刚好手头上有一块HT32F52352的开发板,型号是ESK32-30501U2.1。上一届师兄扔在实验室里,我捡回来的,刚好也就把它带了回家。都说学习一款单片机最开始的是点亮LED,我觉得应该是配置环境还差不多,但由于我本人比较懒, 配置环境可以参考这位博主的这篇文章。 把需要下载的资料全部下载好,方便以后的学习。还有本文中的工程文件源码。 (https://download.csdn.net/download/OldHuangC/12134896) 关于这款单片机的资料在网上少之又少,我在网上找了大量的资料,本着能不自己造轮子绝不自己造轮子的原则,终于完成了隆重的点灯仪式。 由原理图可知,控制这两个LED灯的分别是PC14和PC15这两个脚,所以我们只要控制这两个口就能实现led的亮灭了。 LED.H # ifndef _LED_H # define _LED_H # include "ht32f5xxxx_01.h" # define LED_GPIO_GROUP (GPIO_PC) # define LED1_PIN (GPIO_PIN_14) # define LED2_PIN (GPIO_PIN_15) # define LED_AFIO_MODE

Linux内核之Pinctrl子系统介绍

梦想与她 提交于 2020-02-04 00:32:51
引言 在许多soc内部都包含有pin控制器,通过pin控制器的寄存器,我们可以配置一个或者一组引脚的功能和特性。在软件方面,Linux内核提供了pinctrl子系统,目的是为了统一各soc厂商的pin脚管理。 Pinctrl子系统 一、Pinctrl子系统说明 在许多soc内部都包含有pin控制器,通过pin控制器的寄存器,我们可以配置一个或者一组引脚的功能和特性。各个厂商soc的pin脚在使用中,都有许多共同的特性,要么配置,要么复用pin脚。所以内核提供了一套代码来管理这些pin,这就是pinctrl子系统。主要实现的功能: 1、管理系统中所有的可以控制的pin,在系统初始化的时候,枚举所有可以控制的pin,并标识这些pin。 2、管理这些pin的复用(Multiplexing)。对于SOC而言,其引脚除了配置成普通的GPIO之外,若干个引脚还可以组成一个pin group,行程特定的功能。pin control subsystem要管理所有的pin group。 3、配置这些pin的特性。例如使能或关闭引脚上的pull-up、pull-down电阻,配置引脚的driver strength。 实现pinctrl子系统的功能:core在初始化时,由处理器抽象pin描述,在pinctrl core中枚举所有的pin描述。当我们的驱动层driver使用pinctrl时

STM32定时器计算公式,TIM2的CH4PWM配置

偶尔善良 提交于 2020-02-03 04:17:44
void TIM2_PWM_Init(void) { //定义结构体 GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_InitStructure; TIM_OCInitTypeDef TIM_OCInitStructure; //挂接时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能GPIO外设和AFIO复用功能模块时钟使能 //配置引脚 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStructure); //定时器基础配置 TIM_InitStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim TIM_InitStructure.TIM_CounterMode = TIM

STM32通信:IIC

被刻印的时光 ゝ 提交于 2020-02-03 00:23:57
因为教程上说STM32的硬件IIC复杂而且不太稳定,所以这里使用的是直接控制GPIO端口模拟IIC时序的方式进行通信 因为涉及到初始化、发送、接收等多个功能,所以就分成若干个函数来写了 这里涉及的是主设备上IIC的相关代码,因为SCL线的电平由主设备控制,因此主设备的代码会简单一点 从设备涉及到对SCL线上电平的识别,进而涉及到循环判断或者中断,以后有时间再去看看怎么写(挖坑) 一、IIC通信 1.简介 IIC总线是一种串行数据总线,只有二根信号线,一根是双向的数据线SDA,另一根是时钟线SCL,两条线可以挂多个设备。 IIC设备(绝大多数)里有个固化的地址,只有在两条线上传输的值等于IIC设备的固化地址时,其才会作出响应。通常我们为了方便把IIC设备分为主设备和从设备,基本上谁控制时钟线(即控制SCL的电平高低变换)谁就是主设备。 2.时序图 总结下来就是以下几点: 1.正常传输数据时,当SCL线处于低电平期时,SDA线上的电平允许变动 2.正常传输数据时,当SCL线处于高电平期时,SDA线上的电平不变 3.如果在SCL线的高电平期,SDA线由高电平向低电平跳变,则表示开始传输数据(START信号) 4.如果在SCL线的高电平期,SDA线由低电平向高电平跳变,则表示停止传输数据(STOP信号) 由于SCL线受主设备控制,因此主设备上的代码非常好写 发送数据时

STM32F103ZE跑马灯基于位操作

瘦欲@ 提交于 2020-02-03 00:03:50
位操作:把每个比特映射为一个32位的字,当访问这些字的时候就达到了访问比特的目的。 支持位操作的区域: SRAM 区的最低 1MB 范围,0x20000000 ‐ 0x200FFFFF(SRAM 区中的最低 1MB)。 2.片内外设区的最低 1MB范围,0x40000000 ‐ 0x400FFFFF(片上外设区中最低 1MB)。 映射关系: 位带区:支持位带操作的地址区。 位带别名:对别名地址的访问最终作用到位带区的访问上。 公式不用记忆,本质就是映射关系。 直接对位进行了操作,实质还是操作寄存器的位。配置和基于库函数的跑马灯一样。区别在于主函数中,库函数是对SetBits和ResetBits的操作,位操作是直接对PXout(n)进行赋值。 源码: led.c #include "led.h" #include "stm32f10x.h" void LED_init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//GPIOB RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//GPIOE GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

STM32F1学习笔记

假装没事ソ 提交于 2020-02-01 19:25:27
(二)STM32学习之GPIO 1、GPIO简介 GPIO 是通用输入输出端口的简称,简单来说就是STM32 可控制的引脚,STM32 芯片的GPIO 引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。STM32 芯片的GPIO 被分成很多组,每组有16 个引脚,所有的GPIO 引脚都有基本的输入输出功能。 2、GPIO框图剖析 大致可分为七个模块,由箭头走向可知晓GPIO 引脚线路经过两个保护二极管后, 向上流向“输入模式”结构,向下流向“输出模式”结构 。 (1)保护电路 VDD为3.3V,VSS为公共接地端,当外部输入电压大于3.3V时,上面的二极管导通,保护内部芯片。如果输入为负电压,则下面的二极管导通,电流往外面流,保护内部芯片。 当输入电压过大也将会烧毁芯片,切记不可用GPIO直接连接电动机,电动机具有较大得反向电动势,且积分时间短。 (2)普通输出控制 推挽输出: 所谓的推挽输出模式,是根据这两个MOS 管的工作方式来命名的。在该结构中输入高电平时,经过反向后,上方的P-MOS 导通,下方的N-MOS 关闭, 对外输出高电平,电流往外流,形似往外推 ;而在该结构中输入低电平时,经过反向后,N-MOS管导通,P-MOS关闭, 对外输出低电平,电流往里面流,则为挽留 。当引脚高低电平切换时,两个管子轮流导通,P管负责灌电流,N管负责拉电流,