外设

STM32(2)——GPIO

♀尐吖头ヾ 提交于 2020-03-30 01:56:24
对于初学者而言,最简单的是对芯片上的IO进行操作,我们学习ARM时候,第一个工程就是点亮LED,STM32F103ZET6通用输入输出接口 (General-Purpose Inputs/Outputs),每个GPIO都可以由软件配置成输出(推免或开漏)、输入(带或不带上拉或下拉)或复用的外设功能端口。多数 GPIO引脚都与数字或模拟的复用外设共用。具体的细节请参考 Datasheet。 回到 MDK开发平台,现在要在 main.c中加入相关代码了。代码清单如下: #include "stm32f10x_lib.h" int main() { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOB, ENABLE); //开启外设时钟 GPIOD->CRL = 0x33333333; //设置端口配置寄存器 GPIOB->CRL = 0x33333333; while(1) { GPIOD->ODR = 0xffffffbf; //设置端口输出寄存器 for(i=0;i<1000000;i++); //延时 GPIOD->ODR = 0xffffffff7; for(i=0;i<1000000;i++); GPIOD->ODR = 0x00000000; GPIOB->ODR = 0xffffffff;

[ZigBee] 3、ZigBee基础实验——GPIO输出控制实验-控制Led亮灭

不羁岁月 提交于 2020-03-30 01:55:46
1、CC2530的IO口概述   CC2530芯片有21 个数字输入/输出引脚,可以配置为通用数字I/O 或外设I/O 信号,配置为连接到ADC、定时器或USART外设。这些I/O 口的用途可以通过一系列寄存器配置,由用户软件加以实现。    I/O 端口具备如下重要特性:      􀁺 21 个数字I/O 引脚     􀁺 可以配置为通用I/O 或外部设备I/O     􀁺 输入口具备上拉或下拉能力     􀁺 具有外部中断能力。   21 个I/O 引脚都可以用作于外部中断源输入口。因此如果需要外部设备可以产生中断。 外部中断功能也可以从睡眠模式唤醒设备 。 2、未使用的I/O 引脚处理   未使用的I/O 引脚电平是确定的,不能悬空。一个方法是使引脚不连接,配置引脚为具有上拉电阻的通用I/O输入。这也是所有引脚复位后的状态(除了P1.0 和P1.1 没有上拉/下拉功能)。或者引脚可以配置为通用I/O输出。这两种情况下引脚都不能直接连接到VDD 或GND, 以避免过多的功耗 。 3、低I/O 电压   在数字I/O 电压引脚DVDD1 和DVDD2 低于2.6V 的应用中,寄存器位PICTL.PADSC 应设置为1,以获得DC 特性表中所述的输出DC 特性。 4、通用I/O    用作通用I/O 时,引脚可以组成3 个8 位端口,端口0、端口1 和端口2,表示为P0、P1

STM32学习之路-点亮LED

℡╲_俬逩灬. 提交于 2020-03-30 01:53:06
STM32学习笔记—点亮led灯 STM32的I/O口有很多的功能,所以称为GPIO(GENERAL PURPOSE) 其中GPIO又分为A,B,C,D,E,F,G不同的组,每个组端口又分为0~15,共16个不同的引脚,不同的芯片引脚数量也不同,所用的学习板为STM32F103RBT6; I/O口的八种模式: 输入浮空; 模拟输入; 输入上拉; 输入下拉; 开漏输出; 推挽输出; 推挽式复用功能; 开漏复用功能; 每个I/O口可以自由编程,单I/O口寄存器必须按32位字节被访问。并且很多I/O口都是5V兼容的,手册当中标记FT的就是5V电平兼容的。 I/O的七个 寄存器( register ) :(X=A,B,C,D….G) 32位端口配置低寄存器GPIOX_CRL; 选择作为输入还是输出 32位端口配置高寄存器GPIOX_CRH; 选择作为输入还是输出 32位端口输入数据寄存器GPIOX_IDR; 保存了输入电平还是输出电平 32位端口输出数据寄存器GPIOX_ODR; 保存了输入电平还是输出电平 32位端口位设置/清除寄存器GPIOX_BSRR; 设置控制的数据为0/1 32位端口位清除寄存器GPIOX_BRR; 设置控制的数据为0/1 32位端口配置锁定寄存器GPIOX_LCKR;设置锁定引脚后,不能修改其配置 32位端口配置低寄存器GPIOX_CRL(低8位): 一个I

直接存储器存取(DMA)

£可爱£侵袭症+ 提交于 2020-03-24 20:38:34
DMA作用于存储器传输存储器,存储器传输外设,外设传输存储器,不需要CPU的干涉,解放CUP,相当于多线程。 DMA的使用: 1.开启DMA时钟,2.先删除所用到的DMA通道,3.配置外设地址,4.配置源地址,5.配置传输方向(源地址到外设或是外设到源地址),6.配置DMA传输的大小(16位 65536),7.配置源地址是否增长和外设地址是否增长 8.配置外设和源地址的传输位(一定要一样)9.使能DMA 10.配置优先级(4种,如果优先级相同,根据DMA通道的高低来总裁),11是否是存储器传输给存储器 每个通道有三个标志事件HTIF,TCIF,TEIF,开启相应标志即可产生中断。 来源: https://www.cnblogs.com/Start-wyz/p/12561353.html

DMA---直接存储器访问

霸气de小男生 提交于 2020-03-12 13:37:22
一、DMA简介 DMA传输实现高速数据移动过程无需任何CPU操作控制。 DMA控制器是独立于Cortex_M4内核的。 STM32F407共有2个DMA控制器,DMA1只有外设到存储器和存储器到外设的传输模式,DMA2具有外设到存储器、存储器到外设以及存储器到存储器的传输模式。 传输模式: 1》外设到存储器(P--->M):把外设数据寄存器内容转移到指定的内存空间。 2》存储器到外设(M--->P):把特定存储区内容转移到外设的数据寄存器中。 3》存储器到存储器(M--->M):把一个指定的存储区内容拷贝到另一个存储区空间。 二、功能框图 (1)外设通道选择 每个DMA控制器具有8个数据流,每个数据流对应8个外设通道,每个通道对应不同的DMA请求。 外设通道选择要解决的主要问题是决定哪一个外设作为该数据流的源地址或者目标地址。 每个外设请求都占用一个数据流通道,相同外设请求可以占用不同数据流通道。 (2)仲裁器 仲裁器用来管理判断哪个数据流的优先级高。 仲裁器管理数据流方法分为两个阶段:第一阶段数据软件阶段,在配置数据流时可以通过寄存器设定它的优先级别,可以设置为非常高、高、中和低四个级别。第二阶段数据硬件阶段,如果两个或两个以上数据流软件设置优先级一样,则它们优先级取决于数据流编号,编号越低优先级越高,比如数据流2优先级高于数据流3。 (3)FIFO

STM32中的宏定义及库函数分析

随声附和 提交于 2020-03-07 00:31:41
. 使用KEIL5开发STM32可以使用"GPIOB->ODR"这种方式来给GPIOB的寄存器ODR赋值,因为在STM32中同属于一个外设的所有 寄存器地址基本是相 邻的(有些会有保留寄存器),因此我们可以借助C语言里面的 结构体成员地址递增 的特点来将某个外设的所有寄存器写入到一个结构体里面,然后定义一个结构体指针指向这个外设的寄存器基地址,这样我们就可以通过这个结构体指针来访问这个外设的所有寄存器。 STM32寄存器操作 ST官方为STM32系列处理器都编写了一个stm32f10x.h的文件,通过这个文件定义了STM32的所有外设寄存器。通过引用这个.h文件,我们可以在C文件中方便的找到对应的寄存器。 GPIOE -> CRL & - 0XFF OFFFFF; GPIOE -> CRL = 0X00300000 ; //PE5推挽输出 GPIOE -> ODR = 1 << 5 ; //PE5输出高 可以看出“GPIOE”是个宏定义,是一个指向地址 GPIOE_BASE 的结构体指针,结构体为 GPIO_TypeDef , GPIO_TypeDef 和 GPIOE_BASE 的定义如下 # define GPIOE ((GPIO TypeDef *) GPIOE BASE) typedef struct { __IO uint32_t CRL ; __IO uint32_t

ESP8266 SDK开发: 外设篇-PWM,呼吸灯

走远了吗. 提交于 2020-03-01 16:20:05
说明 1.英文版的资料介绍的不够详细,看这个资料 注意:资料说共用一个硬件定时器,由于从前面知道硬件定时器本身是us级别 说明产生PWM是一个us级别的,让引脚产生PWM只不多也是进入硬件定时器 中断然后控制引脚翻转而已. 2.为了看到明显效果 利用开发板的GPIO2上的LED 设置GPIO2输出PWM 1.根据资料定义一个1*3的数组 //引脚寄存器地址 复用值(普通IO) 引脚序号 uint32 io_info[1][3] = {PERIPHS_IO_MUX_GPIO2_U, FUNC_GPIO2, 2}; 2.设置引脚的高电平时间 uint32 duty[1]={1023/1000*100};//高电平时间约是100us 1023: 固定,我感觉实际上应该填写1024 1000: PWM的周期是1000us(这个在下面) 至于为什么是这样,请用户接着看 3.启动 #include "pwm.h" //1000:周期1000us duty:高电平时间100us 1:就配置了一个管脚,因为数组是[1][3] io_info:io_info数组 pwm_init(1000, duty, 1, io_info); pwm_start();//启动PWM 4.测试 4.1.GPIO2的指示灯发暗 4.2.用示波器观察 5.关于为什么设置高电平时间是 1023*周期/高电平时间

TMS320F28051单片机解密型号

自闭症网瘾萝莉.ら 提交于 2020-02-25 19:17:17
TI 领先的 DSP 技术的处理能力和效率实现了 MCU 的控制外设集成和简便易用性,是诸如数字电机控制、数字电源和智能传感器等嵌入式应用的理想选择。致芯对于DSP系列芯片解密有明显优势。 TMS320F28051基本特性: 高效 32 位 CPU (TMS320C28x) 60MHz(16.67ns 周期时间) 16 × 16 和 32 × 32 乘法和累加 (MAC) 运算 16 × 16 双 MAC 哈佛 (Harvard) 总线架构 连动运算 快速中断响应和处理 统一存储器编程模型 高效代码(使用 C/C++ 和汇编语言) 部分芯片型号如下: TMS320LF2406A TMS320F28027 TMS320F2809 TMS320F28335 TMS320F2810 TMS320F28022 TMS320F2802 TMS320F2811 TMS320F28026 TMS320F2808 TMS320F28334 TMS320LF2407A TMS320F28021 TMS320F2806 TMS320F28332 TMS320LF2402A TMS320F2812 TMS320F28235 TMS320F2802 TMS320F2811 TMS320F28062 TMS320F28050 TMS320F28068 TMS320F28054 来源: 51CTO 作者:

TM4C123-Peripheral Driver Library

☆樱花仙子☆ 提交于 2020-02-25 00:42:06
本文主要是对TI的TivaWare™ Peripheral Driver Library USER’S GUIDE(spmu298d.pdf)文件的阅读摘录,是外设库的简介及对寄存器、库函数两种编程方式的认识。 本文重点是对支持寄存器访问方式的头文件中寄存器命名方式的理解。 一、外设库的简介 该库是一个访问外设的驱动集。 While they are not drivers in the pure operating system sense (that is, they do not have a common interface and do not connect into a global device driver infrastructure), they do provide a mechanism that makes it easy to use the device’s peripherals 虽然它们不是纯操作系统意义上的驱动,即它们没有统一的接口,不连接到全局设备驱动基础结构。 但它们的确使访问外设更加方便 Where possible, computations that can be performed at compile time are done there instead of at run time. 在编译时能完成的计算将在编译时完成 The

DSP与STM32大PK

大憨熊 提交于 2020-02-22 22:58:02
1.FPGA:是可编程逻辑阵列,常用于处理高速数字信号,不过随着科技的发展,现在很多FPGA CPLD可以集成mcu内核,甚至具备了ARM DSP的功能 2.ARM,是一类内核的称谓,就像51一样,具体到芯片的话,会有很多不同的厂家不同等级,诸如三星、易法、飞利浦、摩托罗拉等等,其中STM32是易法半导体的一款面向工控低功耗内核为Cortex M3内核的ARM芯片 3.DSP顾名思义就是数字信号处理,厂家主要是德州仪器(TI)主要用于数字型号处理等对运算速度有特殊要求的场合,诸如音频视频算法,军工等领域,但同时dsp有2000 5000 6000等系列也可满足不场合需要 1.FPGA一般不会用来做复杂的系统,只用来做些简单的系统如状态机实现的自动售货机...展开>等,多少还是用来做信号的高速变换和处理,毕竟它只是可编程逻辑阵列。 2.ARM和DSP就各有千秋了; ARM的系列从V3 V5 V7 V9 XSCALE,从thumb指令到arm指令(thumb arm也可同时实现),可以说遍布机会所有的领域,只要你接的价格可以接受(其实许多arm并不是很贵的),单片机所有的功能基本他都能实现,我就不用举例子,特别是现在与各种RTOS结合更是开发方便功能强大。 DSP相对arm价格要贵些,这也是可能个体厂家使用较少的一个原因吧,2000系列主要用于工控特别是2812这个用的人比较多