gpio

STM32F407 跑马灯 库函数版 个人笔记

自作多情 提交于 2020-02-01 04:37:35
原理图: MCU在开发板原理图的第二页,LED在开发板原理图的第三页 由图可知,PF9 ,PF10 若输出低电平则灯亮,高电平则灯灭 选推挽输出 代码步骤 使能IO口时钟。 调用函数RCC_AHB1PeriphClockCmd();不同的外设调用的时钟使能函数可能不一样 初始化IO口模式。调用函数GPIO_Init(); 操作IO口,输出高低电平。 GPIO_SetBits(); GPIO_ResetBits(); 实现步骤 1.删掉FWLIB中不用的源文件(以提高编译速度),保留misc,rcc , gpio , uart 2.新建hardward文件夹,其中新建led文件夹,其中新建led.c 和led.h,分别引入工程 3.led.h中: #ifndef __LED_H #define __LED_H void LED_Init(void); #endif 4.led.c中,每个函数用gotodefinition查看定义 怎么写函数里的参数呢?找到assert_param 函数 assert_param(IS_RCC_AHB1_CLOCK_PERIPH(RCC_AHB1Periph)); 其中最里层的括号里会出现参数,外面用一个宏包着 对包着参数的那个宏,(如下面的IS_RCC_AHB1_CLOCK_PERIPH)goto definition,可以看到其定义 1)如果直接是

STM32学习笔记(一):跑马灯

二次信任 提交于 2020-02-01 03:59:05
本实验所采用的开发板为正点原子的MiniSTM32f103rc开发板,主函数程序如下,注释如下: main.c #include "stm32f10x.h" void Delay(u32 count) { u32 i=0; for(;i<count;i++); } int main(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE); //使能PA,PD端口时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //LED0-->PA.8 端口配置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz GPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化GPIOA.8 GPIO_SetBits(GPIOA,GPIO_Pin_8); //PA.8 输出高 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;

正点原子STM32探索者学习笔记2

丶灬走出姿态 提交于 2020-02-01 03:57:52
编写者:龙诗科 邮箱:longshike2010@163.com 2015-5-18 STM32F4中GPIO库函数中几个重要的函数: 1.首先是初始化函数如下: 2个读取输入电平函数如下: 2个读取输出电平函数如下: 4个设置输出电平函数如下: 对于跑马灯程序的两个主要函数: void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIOF时钟 //GPIOF9,F10初始化设置 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;//LED0和LED1对应IO口 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHZ GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉 GPIO_Init(GPIOF, &GPIO

ESP8266 01S GPIO中断

自作多情 提交于 2020-02-01 02:22:03
文章目录 学习记录 初始化IO 中断配置 读中断 清中断 函数 重点 学习记录 ESP8266 01S GPIO中断 初始化IO PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO0_U, FUNC_GPIO0); // GPIO_0作为GPIO口 GPIO_DIS_OUTPUT(GPIO_ID_PIN(0)); // GPIO_0失能输出(默认) //即设为输入模式 中断配置 ETS_GPIO_INTR_DISABLE ( ) ; // 关闭GPIO中断功能 ETS_GPIO_INTR_ATTACH ( ( ets_isr_t ) GPIO_INTERRUPT , NULL ) ; // 注册中断回调函数 gpio_pin_intr_state_set ( GPIO_ID_PIN ( 0 ) , GPIO_PIN_INTR_NEGEDGE ) ; // GPIO_0下降沿中断 ETS_GPIO_INTR_ENABLE ( ) ; // 打开GPIO中断功能 // GPIO_PIN_INTR_DISABLE = 0, // 不触发中断 // GPIO_PIN_INTR_POSEDGE = 1, // 上升沿中断 // GPIO_PIN_INTR_NEGEDGE = 2, // 下降沿中断 // GPIO_PIN_INTR_ANYEDGE = 3, //

04_ESP8266 NONOS_SDK GPIO

我的梦境 提交于 2020-02-01 01:37:54
相关资料准备: (1)GPIO相关API请查看2c-esp8266_non_os_sdk_api_reference_cn手册 (2)GPIO相关寄存器请查看 esp8266-technical_reference_cn 手册 (3)ESP8266 的 16 个通⽤ IO 的管脚位置和名称如下表所示: 图1.1-GPIO管脚定义 其中,在四线( QUAD)模式 Flash 下,有 6 个 IO 口用于 Flash 通讯。 在两线( DUAL)模式 Flash 下,有 4 个 IO 口用于与 Flash 通讯。 说明: 本说明如果对照以下资料阅读,会更有助理解: • “附录 1 - GPIO 寄存器” • 引脚功能复⽤表:《 ESP8266_Pin_List.xlsx》 https://www.espressif.com/sites/default/files/documentation/ESP8266_Pin_List.xls 一、GPIO 口输出 目标: 将GPIO2和GPIO4设置成IO口,将管脚设为输出模式,并输出对应电平,加入delay延时,使LED按照一定频率闪烁。步骤如下: 1 、首先将添加两个头文件: "eagle_soc.h"和 "gpio.h" 2 、管脚功能选择: 将GPIO2定义为IO口,PIN_FUNC_SELECT( PERIPHS_IO_MUX

Linux操作系统设备树详解

試著忘記壹切 提交于 2020-02-01 01:21:23
设备树 在Linux3.x版本后,arch/arm/plat-xxx和arch/arm/mach-xxx中,描述板级细节的代码(比如platform_device、i2c_board_info等)被大量取消,取而代之的是设备树,其目录位于arch/arm/boot/dts 1.设备树的组成 1个dts文件+n个dtsi文件,它们编译而成的dtb文件就是真正的设备树 soc厂商会把soc公共的特性和多块开发板公用的特性提炼为dtsi,而dts则负责描述某个具体的产品(开发板)的特性。dts直接或间接的包含多个dtsi(类似于c语言的头文件),就体现了一个完整的产品(开发板)所有的特性。以solidrun公司的hummingboard为例,其组成为 imx6dl-hummingboard.dts |_imx6dl.dtsi | |_imx6qdl.dtsi |_imx6qdl-microsom.dtsi |_imx6qdl-microsom-ar8035.dtsi 此外,dts/dtsi兼容c语言的一些语法,能使用宏定义,也能包含.h文件 2.设备树的结构 下面分别是是imx6dl-hummingboard.dts以及imx6dl.dtsi文件,我们以它们为例来分析,不难发现dts文件内容很少,只有一些板级的特征,大部分公共的硬件描述都在dtsi文件中 imx6dl

树莓派通过模数转换芯片ADC0832读取LM35温度传感器数据

萝らか妹 提交于 2020-01-31 13:19:24
树莓派通过模数转换芯片ADC0832读取LM35温度传感器数据 今天和小朋友一起玩树莓派,打算来做一个测量室温的小实验。经过几个小时的研究和测试,终于能够成功读取LM35传感器的温度数据了。本文主要记录一些这个实验的过程。 使用的材料 Raspberry PI 3B 这个就不用多介绍了,超级流行的一块开发版。我安装的操作系统是 Ubuntu for Arm Server v19.10 树莓派Raspberry PI 3 引脚编号 ADC0832模数转换芯片 ADC0832 是美国国家半导体公司生产的一种8 位分辨率、双通道A/D转换芯片。由于它体积小,兼容性强,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。ADC083X是市面上常见的串行模—数转换器件系列。ADC0831、ADC0832、ADC0834、ADC0838是具有多路转换开关的8位串行I/O模—数转换器,转换速度较高(转换时间32uS),单电源供电,功耗低(15mW),适用于各种便携式智能仪表。本章以ADC0832为例,介绍其使用方法。 ADC0832是8脚双列直插式双通道A/D转换器,能分别对两路模拟信号实现模—数转换,可以用在单端输入方式和差分方式下工作。ADC0832采用串行通信方式,通过DI 数据输入端进行通道选择、数据采集及数据传送。8位的分辨率(最高分辨可达256级)

stm32学习笔记四

荒凉一梦 提交于 2020-01-31 11:51:41
按键控制 利用按键控制led,在笔记一的基础上添加按键控制。 步骤还是如常,建立key.h,key.c文件,并添加到工程中。 key.h内容 # ifndef KEY_H # include "sys.h" # define KEY0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4) # define KEY1 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3) # define KEY2 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2) # define KEY3 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) # define KEY0_PRES 1 # define KEY1_PRES 2 # define KEY2_PRES 3 # define WKUP_PRES 4 void KEY_Init ( void ) ; //IO初始化 u8 KEY_Scan ( u8 ) ; //按键扫描函数 # endif key.c内容 # include "key.h" # include "delay.h" void KEY_Init ( void ) { GPIO_InitTypedef key ; RCC_AHB1PeriphClockCmd ( RCC

STM32 GPIO常用库函数

空扰寡人 提交于 2020-01-30 07:21:03
库函数代码 头文件:stm32f10x_gpio.h 源文件:stm32f10x_gpio.c 使能函数 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOx,ENABLE); 1个初始化函数: void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); (1) 作用:初始化一个或者多个IO口(同一组)的工作方式和速度。 (2) 该函数主要是操作GPIO_CRL(CRH)寄存器,在上拉或者下拉的时候有设置BSRR或者BRR寄存器 (3) GPIOx: GPIOA~GPIOG (4) GPIO_Init函数初始化样例: GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0–>PB.5 端口配置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化GPIOB.5

STM32 MCO输出HSE、LSI等时钟波形以及使用LSI发现内部RC震荡频率紊乱的问题

一笑奈何 提交于 2020-01-29 05:37:37
最近调试产品遇到了一个问题,现象是产品RTC计数不准,定的5s的采样周期,实际表现确是3s多,而且每次间隔还在波动,后来追查到应该是关于STM32的LSI内部RC震荡频率有时会不准,由于问题不好复现,所以采用MCO将内部RC震荡频率输出接到示波器上查看,在此记录下STM32配置MCO(基于HAL库)。 STM32是通过PA8管脚输出MCO信号的,个别大容量的型号可能有两个IO可输出MCO,我手里使用的STM32L431只有一路,调用库函数配置十分简单,只需要一句话即可: HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_LSI, RCC_MCODIV_1); 我们具体看下库函数内的内容: /** * @brief Select the clock source to output on MCO pin(PA8). * @note PA8 should be configured in alternate function mode. * @param RCC_MCOx specifies the output direction for the clock source. * For STM32L4xx family this parameter can have only one value: * @arg @ref RCC_MCO1