gpio

STM32F030系列PWM配置

喜欢而已 提交于 2020-02-21 09:31:28
一、按照TIM15为例子配置PWM输出 void TIM15_Config(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE); //开启管脚时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM15, ENABLE); //打开定时器15的时钟 GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_1); //打开复用功能 GPIO_InitStructure.GPIO_Pin = PB15_LASUO_PWM_OUTPUT; //PWM2输出引脚PB15 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //复用功能模式 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO

stm32学习笔记-外部中断

让人想犯罪 __ 提交于 2020-02-21 07:27:31
文章目录 1、stm32f103外部中断控制器EXTI。 1.1外部中断的映像 1.2 外部中断/事件的框图 1.3 外部中断的编程。 外部中断配置思路 相关寄存器 相关库函数 1.4 按键中断实例。 1、stm32f103外部中断控制器EXTI。 1.1外部中断的映像 外部中断只有0~18共19个,那如何给每一个GPIO口配置上中断,通过一个映像把所有具有相同下标的GPIO口映像成相应下标的外部中断。 参考手册: 1.2 外部中断/事件的框图 中断大致过程如下: 通过配置 上升沿/下降沿触发选择寄存器 选择 边沿检测电路 所要检测的边沿跳变。 边沿检测电路 根据 输入线 是否有相应的边沿跳变,检测到则输出信号1,否则输出信号0。 通过一个 或门 ,或门 以 边沿检测电路 、 软件中断事件寄存器 (中断事件可以通过软件产生) 作为输入。两者之一有一个产生信号1,或门就输出信号1。 或门输出的信号1。输出的信号1发至 请求挂起寄存器 。 请求挂起寄存器对应寄存器的位置1,然后请求挂起寄存器会产生一个信号1。(不懂,这里暂略) 请求挂起寄存器、中断屏蔽寄存器同时输出信号1,则发生信号1到NVIC中断控制器。(注意:这里可以看出中断屏蔽也就是一个与操作。) 事件大致过程如下: 通过配置 上升沿/下降沿触发选择寄存器 选择 边沿检测电路 所要检测的边沿跳变。 边沿检测电路 根据 输入线

三极管典型开关电路

筅森魡賤 提交于 2020-02-20 07:59:58
1.基极必须串接电阻,保护基极,保护CPU的IO口。 2.基极根据PNP或者NPN管子加上拉电阻或者下拉电阻。 3.集电极电阻阻值根据驱动电流实际情况调整。同样基极电阻也可以根据实际情况调整。 基极和发射极需要串接电阻,该电阻的作用是在输入呈高阻态时使晶体管可靠截止,极小值是在前级驱动使晶体管饱和时与基极限流电阻分压后能够满足晶体管的临界饱和, 实际选择时会大大高于这个极小值, 通常外接干扰越小、负载越重准许的阻值就越大,通常采用10K量级。 防止三极管受噪声信号的影响而产生误动作,使晶体管截止更可靠! 三极管的基极不能出现悬空,当输入信号不确定时(如输入信号为高阻态时),加下拉电阻,就能使有效接地。 特别是GPIO连接此基极的时候,一般在GPIO所在IC刚刚上电初始化的时候,此GPIO的内部也处于一种上电状态,很不稳定,容易产生噪声,引起误动作!加此电阻,可消除此 影响(如果出现一尖脉冲电平,由于时间比较短,所以这个电压很容易被电阻拉低;如果高电平的时间比较长,那就不能拉低了,也就是正常高电平时没有影响)! 但是电阻不能过小,影响泄漏电流!(过小则会有较大的电流由电阻流入地) 当三极管开关作用时,ON和OFF时间越短越好,为了防止在OFF时,因晶体管中的残留电荷引起的时间滞后,在B,E之间加一个R起到放电作用。 来源: https://www.cnblogs.com

一个典型的晶体管开关电路

℡╲_俬逩灬. 提交于 2020-02-20 01:26:36
1.基极必须串接电阻,保护基极。保护CPU的IO口。 2.基极依据PNP或者NPN管子加上拉电阻或者下拉电阻。 3.集电极电阻阻值依据驱动电流实际情况调整。相同基极电阻也能够依据实际情况调整。 基极和发射极须要串接电阻,该电阻的作用是在输入呈高阻态时使晶体管可靠截止。极小值是在前级驱动使晶体管饱和时与基极限流电阻分压后可以满足晶体管的临界饱和,实际选择时会大大高于这个极小值。通常外接干扰越小、负载越重准许的阻值就越大。通常採用10K量级。 防止三极管受噪声信号的影响而产生误动作,使晶体管截止更可靠!三极管的基极不能出现悬空,当输入信号不确定时(如输入信号为高阻态时)。加下拉电阻。就能使有效接地。 特别是GPIO连接此基极的时候。一般在GPIO所在IC刚刚上电初始化的时候,此GPIO的内部也处于一种上电状态,非常不稳定,easy产生噪声,引起误动作!加此电阻,可消除此影响(假设出现一尖脉冲电平,因为时间比較短,所以这个电压非常easy被电阻拉低;假设高电平的时间比較长。那就不能拉低了,也就是正常高电平时没有影响)。 可是电阻不能过小。影响泄漏电流!(过小则会有较大的电流由电阻流入地) 当三极管开关作用时,ON和OFF时间越短越好,为了防止在OFF时,因晶体管中的残留电荷引起的时间滞后,在B,E之间加一个R起到放电作用。 来源: https://www.cnblogs.com

实现按键、键盘的功能

大憨熊 提交于 2020-02-19 10:41:11
实现按键、键盘的功能 写在前面 按钮开关 轻触开关是一种电子开关,使用时 ,轻轻按开关按钮就可使开关接通,当松开手时,开关断开。我们使用的开关如下图:    LED连接P0.0口,独立按键连接p1.0口,当按键按下时,P1.0口为低电平,led灯输出为高电平,led灯点亮。 矩阵键盘      1.键盘的工作原理: 按键设置在行、列线交点上,行、列线分别连接到按键开关的两端。行线通过上拉电阻接到+5V电源上。无按键按下时,行线处于高电平的状态,而当有按键按下时,行线电平与此行线相连的列线电平决定。 2.行列扫描法原理: 第一步, 使行线为编程的输入线,列线是输出线,拉低所有的列线,判断行线的变化,如果有按键按下,按键按下的对应行线被拉低,否则所有的行线都为高电平。 第二步,在第一步判断有键按下后, 延时 10ms消除机械抖动,再次读取行值,如果此行线还处于低电平状态则进入下 一步,否则返回第一步重新判断。 第三步,开始扫描按键位置,采用逐 行扫描,每间隔 1ms的时间,分别拉低第一列,第二列,第三列,第四 列,无论拉低哪一列其他三列都为高电平,读取行值找到按键的位置,分别把行值和列值储存在寄存器里。 第四步,从寄存器中找到行值和列 值并把其合并,得到按键值,对此按键值进行编码,按照从第一行第一个一直到第四行第四个逐行进行编码,编码值从 “0000” 至“1111” , 再进行译码

STM32学习笔记5(TIM通用模块定时功能)

吃可爱长大的小学妹 提交于 2020-02-17 11:41:33
原文地址: http://blog.sina.com.cn/s/blog_49cb42490100s6ud.html 1. STM32 的 Timer 简介 STM32中一共有 11个定时器,其中 2个高级控制定时器, 4个普通定时器和 2个基本定时器,以及 2个看门狗定时器和 1个系统嘀嗒定时器。其中系统嘀嗒定时器是前文中所描述的 SysTick,看门狗定时器以后再详细研究。今天主要是研究剩下的 8个定时器。 定时器 计数器分辨率 计数器类型 预分频系数 产生 DMA请求 捕获 /比较通道 互补输出 TIM1 TIM8 16位 向上,向下,向上 /向下 1-65536之间的任意数 可以 4 有 TIM2 TIM3 TIM4 TIM5 16位 向上,向下,向上 /向下 1-65536之间的任意数 可以 4 没有 TIM6 TIM7 16位 向上 1-65536之间的任意数 可以 0 没有 其中 TIM1和 TIM8是能够产生 3对 PWM互补输出的高级登时其,常用于三相电机的驱动,时钟由 APB2的输出产生。 TIM2-TIM5是普通定时器, TIM6和 TIM7是基本定时器,其时钟由 APB1输出产生。由于 STM32的 TIMER功能太复杂了,所以只能一点一点的学习。因此今天就从最简单的开始学习起,也就是 TIM2-TIM5普通定时器的定时功能。 2. 普通定时器 TIM2

Camera5 MTK camera驱动框架介绍

前提是你 提交于 2020-02-17 06:43:11
一、概序:   前文已经介绍了camera驱动部分的内容 Camera4 MTK camera驱动结构介绍 ,这里在回顾下之前的框架图, 这篇主要介绍红框部分的内容:        imgsensor起到承上启下的作用,在系统起来时会创建整个camera驱动运行的环境,其中主要的 文件和函数如下框图所示,先设备挂载时会调用注册platform设备platform_driver_register,在匹配成 功后会调用probe函数进行初始相关的设备:        其中camera的三路电压的上电方式可以通过GPIO来控制,也可以通过PMIC(REGULATOR)的方式来 进行控制,在imgsensor_hw中通过不同的pdev信息,调用不同的set函数。涉及的文件路径:   kernel-4.9/drivers/misc/mediatek/imgsensor/src/common/v1/imgsensor.c   kernel-4.9/drivers/misc/mediatek/imgsensor/src/common/v1/imgsensor_hw.c   kernel-4.9/drivers/misc/mediatek/imgsensor/src/mt6765/camera_hw/regulator/regulator.c   kernel-4.9/drivers/misc

GPIO输入与输出设置

淺唱寂寞╮ 提交于 2020-02-17 02:21:12
GPIO(也称为通用输入/输出)是控制器中最简单也是最重要的配置。但即便如此,IO也有各种各样的类型和配置选项,有输入,输出,上拉,下拉,推挽等。虽然我们天天都和它打交道,但是你真的了解其中的配置吗? 输入模式 通常,GPIO输入主要通过以下三种方式之一进行配置: ● 高阻抗 (Hi-Z,也称为浮动floating) ● 上拉 (Pull-up,内部电阻连接到VCC) ● 下拉 (Pull-down,内部电阻连接到地) 当Input port被处在高阻抗的模式下,若没有外部讯号源进来的话,此时是无法确定port的状态(不能确定现在处在高电位或低电位),除非有外部讯号来驱动电路。换句话说,Input floating,这个Input电位状态完全是由外部讯号来决定,没有讯号驱动的话,就会呈现高阻抗状态。 如果我们需要这个port有一个明确的预设状态时,必须借助pull-up(pull-down)resistor来做调整,在pull-up resistor(pull-up外接高电压,pull-down通常会接地)的作用之下,让port的维持在明确的高电压状态(pull-down则是让port维持在低电压状态)。 至于具体电阻的大小,一般在芯片手册中都有详细的描述。在实际配置中,除了要考虑port口内的上下拉电阻大小,还需要考虑MCU外围电路所带来的影响。 输出模式 GPIO的输出模式

STM32F103C8T6 TIM2_CH2 PWM输出

耗尽温柔 提交于 2020-02-15 18:43:24
以 STM32F103C8T6,uVision 开发环境为例,注意了,若使用其它相近芯片,本文 仅供参考 。 #include "stm32f10x.h" #include "stm32f10x_tim.h" //********************************************************************************** void GPIO_CFG() //PWM输出引脚A1函数 { GPIO_InitTypeDef GPIO_InitStructure; //声明GPIO_InitStructure结构变量 // 原版创作,引用请指明出处 https://www.cnblogs.com/beiyhs/p/11406535.html 北有寒山 /* 使能GPIOA时钟 */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能AHB预分频器到端口A的开关 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); /* 配置LED相应引脚PA1*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //指定脚1输出 GPIO_InitStructure.GPIO_Mode=GPIO

I2S 总线学习:2-I2S驱动WM8978

不问归期 提交于 2020-02-14 11:04:23
背景 为了了解I2S总线所对应的硬件设计,下文转载了 《STM32:I2S驱动WM8978》 。 以加深对I2S总线的了解。 正文 最近项目中使用STM32F4驱动音频IC:WM8978。 由于STM32的I2S接口只有一个数据引脚,因此在设计引脚的时候,就需要确定是录音还是放音。 WM8978为DAC+ADC芯片,本身并不具备编解码的功能。 1)WM8978可通过I2S接口接收PCM数据,转为模拟信号输出,此为DAC过程,即放音; 2)WM8978可接收模拟信号转为数字信号,通过I2S接口传输给MCU,此为ADC过程,即录音。 3)WM8978还使用I2C接口配置其工作参数,比如音量,EQ,3D环绕等。WM8978本身可直连1W/8欧的小喇叭。(在下文中没有使用) 1.GPIO配置 我使用的是I2S3,对着硬件工程师给的原理图,再使用STM32CubeMX对照各个管脚看看是否有此映射。不得不说,新版的STM32CubeMX使用起来有些不顺。我只喜欢使用STM32CubeMX查看资源,却不喜欢这个软件的代码,架构有些不合我意。 我使用的还是传统的库,版本为V1.4.0。 GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB |