外设

STM32固件库文件分析

不羁岁月 提交于 2019-12-28 02:51:03
1-汇编编写的启动文件 ** startup_stm32f10x_hd.s:设置堆栈指针、设置PC指针、初始化中断向量表、配置系统时钟、调用C库函数_main最终去到C的世界: hd(high density) flash大小 2-时钟配置文件 system_stm32f10x.c:把外部时钟HSE=8M,经过PLL(锁相环)倍频为 72M。 3-外设相关的 stm32f10x.h:实现了内核之外的外设的寄存器映射 xxx:GPIO、USRAT、I2C、SPI、FSMC stm32f10x_xx.c:外设的驱动函数库文件 stm32f10x_xx.h:存放外设的初始化结构体,外设初始化结构体成员的参数列表,外设固件库函数的声明 4-内核相关的 CMSIS - Cortex 微控制器软件接口标准 core_cm3.h:实现了内核里面外设的寄存器映射 core_cm3.c:内核外设的驱动固件库 NVIC(嵌套向量中断控制器)、SysTick(系统滴答定时器) misc.h misc.c 5-头文件的配置文件 stm32f10x_conf.h:头文件的头文件 //stm32f10x_usart.h //stm32f10x_i2c.h //stm32f10x_spi.h //stm32f10x_adc.h //stm32f10x_fsmc.h 6-专门存放中断服务函数的C文件

ARM数据/地址总线架构简析

霸气de小男生 提交于 2019-12-21 20:01:20
ARM架构简析 1,ARM概述 现在大家讲的ARM的概念实际上是很模糊的,他可能指的是一类芯片,或者指的是ARM公司,亦或者是精简指令集,还是千万人手中的饭碗。下面引用一段关于百度百科关于ARM的准确描述 ARM架构,曾称进阶精简指令集机器(Advanced RISC Machine)更早称作Acorn RISC Machine,是一个32位精简指令集(RISC)处理器架构。还有基于ARM设计的派生产品,重要产品包括Marvell的XScale架构和德州仪器的OMAP系列。 ARM家族占比所有32位嵌入式处理器的75%,成为占全世界最多数的32位架构。 在1980年代晚期,苹果电脑开始与Acorn合作开发新版的ARM核心,由于这专案非常重要,Acorn甚至于1990年将设计团队另组成一间名为安谋国际科技(Advanced RISC Machines Ltd.)的新公司。也基于这原因,使得ARM有时候反而称作Advanced RISC Machine而不是Acorn RISC Machine。由于其母公司ARM Holdings plc于1998年的伦敦交易市场和NASDAQ挂牌上市[1],使得Advanced RISC Machines成了ARM Ltd旗下拥有的产品。 这个专案到后来进入了ARM6,首版的式样在1991年释出,然后苹果电脑使用ARM6架构的ARM

STM32 DMA传输笔记(HAL库版)

拟墨画扇 提交于 2019-12-19 07:26:56
DMA,全称为:Direct Memory Access,即直接存储器访问。 DMA传输方式无需CPU 直接控制传输 ,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM 与I/O设备开辟一条直接传送数据的通路,能使CPU 的效率大为提高。 一、DMA请求映像   STM32F10x有两个DMA控制器,使用DMA控制器可使数据从存储器到存储器、存储器到外设、外设到存储器。每个控制器有若干通道,参考《STM32参考手册》,各通道请求一览如下图: 二、DMA初始化    1、使能DMA时钟 __HAL_RCC_DMA1_CLK_ENABLE(); //DMA1时钟使能    2、关联DMA与UART1 DMA_HandleTypeDef UART1TxDMA_Handler; //DMA句柄 __HAL_LINKDMA(&UART1_Handler,hdmatx,UART1TxDMA_Handler); //将DMA与USART1联系起来(发送DMA)    3、配置DMA句柄 //Tx DMA配置 UART1TxDMA_Handler.Instance=chx; //通道选择 通道4指的是UART1Tx UART1TxDMA_Handler.Init.Direction=DMA_MEMORY_TO_PERIPH; //存储器到外设 /*由于是从存储器读数据给外设

输入和输出

ぃ、小莉子 提交于 2019-12-19 01:32:35
外设的典型初始化过程一般包括以下步骤 (1)配置时钟控制回路,使能外设的时钟信号,并且有必要的话,初始化相应的引脚。 在许多低功耗微控制器中,时钟信号被分为了许多路,而且为了降低功耗,它们可以单独开 关。大多数时钟信号默认都是关闭的,配置外设前通常需要使能相应的时钟。有些情况下, 用户可能还需要使能外设总线系统的时钟。 (2)配置I/O,大多数微控制器的引脚都是复用的,需要对I/O引脚的功能进行配置, 以确保外设接口正常工作。另外,有些微控制器的I/O引脚的电气特性也是可以配置的, 这样也就增加了配置步骤。 (3)配置外设,大多数接口外设都有多个可编程的控制寄存器,因此,为了确保外设工 作正常,就需要对寄存器进行一系列的编程操作。 (4)配置中断,如果外设操作需要中断处理,就需要另外配置中断控制器(例如Cortex- M0的NVIC)。 来源: CSDN 作者: 那个苏轼回不来了丶 链接: https://blog.csdn.net/qq_45763093/article/details/103600414

KVM设备透传与重定向

依然范特西╮ 提交于 2019-12-18 20:50:41
1.1 设备透传与重定向 在私有云桌面中,设备的透传(passthrough)与重定向(redirection)一直以来都是作为基本功能出现的。两者的在使用上的区别是前者一般将主机上的设备直接传递给在其中运行的虚拟机,后者则是将客户端的设备通过网络传递给其正在连接的虚拟机,相同点是当传递至虚拟机或虚拟机归还设备时,这对于主机来说是个设备热插拔操作。 1.1.1 PCI/PCI-E设备 在QEMU中,PCI/PCI-E设备目前仅支持透传(某些商业软件可对PCI/PCI-E设备进行重定向),且需要在主机BIOS设置中CPU打开Intel VT-d/选项(AMD CPU与之对应的是AMD Vi),可透传的设备包括显卡、声卡、HBA卡、网卡、USB控制器等,其中某些设备需要额外设置(比如IOMMU)才可进行透传。 使用libvirt透传PCI/PCI-E设备时需要知道要透传设备的总线地址,以在域定义中指定要透传的设备。一般落实到QEMU中有这些为透传准备的设备模型,包括pci-assgn、vfio-pci、vfio-vga等。 以透传主机网卡为例: [root@node1 ~]# lspci 00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge ... 02:05.0 Ethernet

【计算机组成原理】 输入/输出系统

依然范特西╮ 提交于 2019-12-18 02:35:31
I/O 系统基本概念 I/O 系统中的几个基本概念如下: 外部设备。包括输入/输出设备及通过输入。输出接口才能访问的外存储结构。 接口。在各个外设与主机之间传输数据时进行各种协调工作的逻辑部件。协调包括传输过程中速度的匹配、电平和格式转换等。 输入设备,用于向计算机系统输入命令和文本、数据等信息的部件。键盘和鼠标是最基本的输入设备。 输出设备。用于将计算机系统中的信息输出到计算机外部进行显示、交换等的部件。显示器和打印机是最基本的输出设备。 外存设备。指除计算机内存及 CPU 缓存等外的存储器。硬磁盘、光盘等是最基本的外存设备。 一般来说,I/O 系统由 I/O 软件和 I/O 硬件两部分构成: I/O 软件。包括驱动程序、用户程序、管理程序、升级补丁等。通常采用 I/O 指令和通道指令实现 CPU 与 I/O 设备的信息交换。 I/O 硬件。包括外部设备、设备控制器和接口、I/O 总线等。通过设备控制器来控制 I/O 设备的具体动作:通过 I/O 接口与主机(总线)相连。 在输入/输出系统中,经常需要进行大量的数据传输,而传输过程中有各种不同的 I/O 控制方式,基本的控制方式有以下 4 种: 程序查询方式。由 CPU 通过程序不断查询 I/O 设备是否已经做好准备,从而控制 I/O 设备与主机交换信息。 程序中断方式。只在 I/O 设备准备就绪并向 CPU

DMA详解

佐手、 提交于 2019-12-18 00:27:47
1、DMA由来 DMA(Direct Memory Access,直接存储器访问)。在DMA出现之前,CPU与外设之间的数据传送方式有程序传送方式、中断传送方式。CPU是通过系统总线与其他部件连接并进行数据传输。 1.1程序传送方式 程序传送方式是指直接在程序控制下进行数据的输入/输出操作。分为无条件传送方式和查询(条件传送方式)两种。 1.1.1无条件传送方式 微机系统中的一些简单的外设,如开关、继电器、数码管、发光二极管等,在它们工作时,可以认为输入设备已随时准备好向CPU提供数据,而输出设备也随时准备好接收CPU送来的数据,这样,在CPU需要同外设交换信息时,就能够用IN或OUT指令直接对这些外设进行输入/输出操作。由于在这种方式下CPU对外设进行输入/输出操作时无需考虑外设的状态,故称之为无条件传送方式。 1.1.2查询(有条件)传送方式 查询传送也称为条件传送,是指在执行输入指令(IN)或输出指令(OUT)前,要先查询相应设备的状态,当输入设备处于准备好状态、输出设备处于空闲状态时,CPU才执行输入/输出指令与外设交换信息。为此,接口电路中既要有数据端口,还要有状态端口。 1.2中断传送方式 中断传送方式是指当外设需要与CPU进行信息交换时,由外设向CPU发出请求信号,使CPU暂停正在执行的程序,转而去执行数据输入/输出操作,待数据传送结束后,CPU再继续执行被暂停的程序

stm32环境搭建

[亡魂溺海] 提交于 2019-12-17 22:13:42
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> MDK http://www.keil.com/arm/mdk.asp MDK-ARM(Microcontroller Development Kit) 是功能强大和常用的cortex-mx 开发环境。 其包含 µVision4 IDE,最新版本需要根据mcu的系列下载不同的pack包( http://www.keil.com/dd2/Pack/ )以支持特定设备,目前stm32库开发方式有两种,一种是最新的cube方式,另一种是传统的标准库方式,如果使用前者,不需要下载其它东西即可,如果需要stm的标准库开发方式,还需单独下载st官方的标准库。 因为标准库方式之前比较主流,参考资源较多,这里先学习标准库方式。 官方标准固件库 链接 Home 》Embedded Software 》MCUs Embedded Software 》STM32 Embedded Software 或 首页 》 软件 》 微控制器软件 》 STM32微控制器软件 在灰色的导航中选择 STM32 standard peripherals library,然后根据需要的型号进入对应页面,在页面最底部提供软件下载地址(需要输入邮箱) 如何使用标准库 解压下载的标准库压缩包,目录结构如下: ├── _htmresc ├──

GPIO外部中断

爷,独闯天下 提交于 2019-12-17 21:38:43
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在STM32中,其每一个外设都可以产生中断。 中断分为分为 ①系统异常,内核 ②外部中断,外设 NVIC(Nested Vector Interrupt Controller ):嵌套向量中断控制器,属于内核外设,管理着包括内核片和片上所有外设的终端相关功能。 core_cm3.h与misc.h有相关函数 野火指南者内核中断有 10 个,外设中断有 60 个。 由NVIC->IPRx来控制 static void EXTI_NVIC_Config(void) { NVIC_InitTypeDef NVIC_InitStruct;//配置NVIC结构体NVIC_InitTypeDef; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);设置优先级分组 NVIC_InitStruct.NVIC_IRQChannel = EXTI0_IRQn ; NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;//选择主优先级 NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;//选择次优先级 NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;

初学单片机,该如何选择单片机开发板?

回眸只為那壹抹淺笑 提交于 2019-12-15 18:48:42
单片机是可编程器件,可以通过编程来实现逻辑功能,这不仅降低了产品设计的复杂度,更丰富了产品的功能。现在的电子产品,多是以单片机为控制核心,再根据不同的用户需求来搭建不同的外设电路。所以,单片机在电子产品设计中非常重要,学会单片机在找工作时具有非常大的优势。 1 以单片机为核心的产品框图 那么,初学者在接触单片机之处,该如何学习呢?如何学习单片机才最有效?这就涉及到单片机开发板了。 (此处已添加圈子卡片,请到今日头条客户端查看) 什么是单片机开发板?单片机开发板是专为学习单片机而设计的板子,板子上具有一颗具体型号的单片机,再扩展了常用的外设电路,可以供初学者方便的学习单片机的片上资源、外设电路以及程序的编写。单片机需要学习什么?学习单片机就是学习具体型号单片机的片上资源、外设电路的设计、寄存器的控制方式、库函数的使用方式,以及单片机的编程方法。 2 - 单片机开发板 可见,拥有一块单片机开发板,对初学者来说,是多么的重要,不仅方便了学习,更能在指导下循序渐进、按部就班提高学习效率。那么该如何选择合适自己的开发板呢?可以考虑从如下几个方面如数选择。 1 选择合适自己的单片机型号 单片机是一门强调动手能力的学科,与数学、物理等理科不同,学习单片机不建议每天抱着书本看,而建议直接选择一款具体型号的单片机去学习外设电路的设计和程序的编写。在选择单片机型号的时候,可以看一下自己周围的同学