在STM32上使用TI的IQmath库

在STM32上使用TI的IQmath库
在STM32上使用TI的IQmath库

如何使用IQmath库基于ARM Cortex-M3/M4的STM32

王志杰

2014/6/13

目录

1TI IQmath库简介 (2)

2在IAR中使用IQmath库 (4)

2.1获得IQmath库 (4)

2.2IAR中配置IQmath库 (6)

3在KEIL中使用IQmath库 (9)

3.1获得StellarisWare和IQmath库 (9)

3.2在KEIL中配置IQmath库 (10)

1TI IQmath库简介

德州仪器(TI) 的IQmath 库是一个高度优化的高精度数学函数集合,使C/C++ 编程人员可以将浮点算法无缝植入定点代码中。这些例程通常用于计算密集型实时应用,最佳执行速度和高精确度是这些应用的关键。通过使用这些例程,您可以获得比使用标准ANSI C 语言编写的等效代码更快的执行速度。IQmath 库还能通过定义可编程动态范围和分辨率,解决定点数学的局限性。

IQmath 优势

?用于定点处理器的数学函数库加快了计算浮点值的速度

o提供Sin,cos,tan,arcsin,arccos,sqrt,fractional mpy,dv 等的计算?加快了对以下操作的处理速度:

o电机控制

o伺服控制

o音频/图像编码和解码

o定点Q 数学

o图形旋转

?可根据应用要求调节分辨率

o指定GLOBAL_Q 18

?可在定点和浮点器件之间实现代码的无缝兼容性

IQmath 函数表

?格式转换实用程序

o atoIQN, IQN, IQNfrac, IQNint, IQNtoa, IQNtoD, IQNtoF, IQNtoIQ, IQtoIQN, IQtoQN, QNtoIQ

?算术函数

o IQdiv, IQmpy, IQNdiv, IQNmpy, IQNmpy, IQNmpyI32, IQNmpyI32frac, IQNmpyI32int, IQNmpyIQX, IQNrmpy, IQNrsmpy

?三角函数

o IQNacos, IQNasin, IQNatan, IQNatan2, IQNatan2PU, IQNcos, IQNcosPU, IQNsin, IQNsinPU

?数学函数

o IQNexp2, IQNisqrt, IQNmag, IQNsqrt

?其它

o IQNabs, IQNsat

奋斗STM32开发板Tiny NRF24L01转USB虚拟串口例程手册

奋斗版 STM32 开发板例程手册———NRF24L01+转 USB 虚拟串口实验
https://www.360docs.net/doc/5417677811.html,
NRF24L01+转 USB 虚拟串口实验
实验平台:奋斗版STM32开发板Tiny 实验内容:板子通过USB加电后,先向串口1输出一串测试数据,然后USB被PC识 别出来,虚拟出一个串口号给这个USB设备,此时可以通过在PC端的串口助手类 软件选择该串口号。进入串口软件界面,可以通过软件无线收发一帧长度最长 为32字节的数据。该例程可以和V3及MINI板的NRF24L01 UCGUI例程配合使用。
预先需要掌握的知识 2.4G通信模块NRF24L01 1. 产品特性
2.4GHz 全球开放ISM 频段,最大0dBm 发射功率,免许可证使用 支持六路通道的数据接收 低工作电压:1.9 1.9~3.6V 低电压工作 高速率:2Mbps,由于空中传输时间很短,极大的降低了无线传输中的碰撞现象(软件设置1Mbps或者2Mbps的空中传输速率) 多频点:125 频点,满足多点通信和跳频通信需要 超小型:内置2.4GHz天线,体积小巧,15x29mm(包括天线) 低功耗:当工作在应答模式通信时,快速的空中传输及启动时间,极大的降低了电流消耗。 低应用成本:NRF24L01 集成了所有与RF协议相关的高速信号处理部分,比如:自动重发丢失数据包和自动产生应答信号等, NRF24L01的SPI接口可以利用单片机的硬件SPI口连接或用单片机I/O口进行模拟,内部有FIFO可以与各种高低速微处理器接口, 便于使用低成本单片机。 便于开发:由于链路层完全集成在模块上,非常便于开发。 自动重发功能,自动检测和重发丢失的数据包,重发时间及重发次数可软件控制 自动存储未收到应答信号的数据包 自动应答功能,在收到有效数据后,模块自动发送应答信号,无须另行编程 载波检测—固定频率检测 内置硬件CRC 检错和点对多点通信地址控制 数据包传输错误计数器及载波检测功能可用于跳频设置 可同时设置六路接收通道地址,可有选择性的打开接收通道 标准插针Dip2.54MM 间距接口,便于嵌入式应用
2.基本电气特性
淘宝店铺:https://www.360docs.net/doc/5417677811.html,
1

STM32固件库的学习(重要,要常看)

1. stm32的编程中,在stdperiph_drive中添加的misc.c文件是干什么用的啊? 因为STM32 V3.5版本的库函数中没有原来版本中单独对于NVIC(中断向量嵌套)的外设驱动,把NVIC的外设驱动放在了misc.c中,实际上是代替原来的stm32f10x_nvic.c。 2. STM32F10XXX V 3.5标准外设库文件夹描述 标准外设库的第一部分是CMSIS 和STM32F10x_StdPeriph_Driver,CMSIS 是独立于供应商的Cortex-M处理器系列硬件抽象层,为芯片厂商和中间件供应商提供了简单的处理器软件接口,简化了软件复用工作,降低了Cortex-M上操作系统的移植难度,并减少了新入门的微控制器开发者的学习曲线和新产品的上市时间。 STM32F10x_StdPeriph_Driver则包括了分别对应包括了所有外设对应驱动函数,这些驱动函数均使用C语言编写,并提供了统一的易于调用的函数接口,供开发者使用。Project 文件夹中则包括了ST官方的所有例程和基于不同编译器的项目模板,这些例程是学习和使用STM32的重要参考。Utilities包含了相关评估板的示例程序和驱动函数,供使用官方评估板的开发者使用,很多驱动函数同样可以作为学习的重要参考。 3.文件功能说明

4.CMSIS文件夹结构

在实际开发过程中,根据应用程序的需要,可以采取2种方法使用标准外设库

(StdPeriph_Lib): (1)使用外设驱动:这时应用程序开发基于外设驱动的API(应用编程接口)。用户只需要配置文件”stm32f10x_conf.h”,并使用相应的文件”stm32f10x_ppp.h/.c”即可。 (2) 不使用外设驱动:这时应用程序开发基于外设的寄存器结构和位定义文件。 5. STM32F10XXX标准外设库的使用 标准外设库中包含了众多的变量定义和功能函数,如果不能了解他们的命名规范和使用规律将会给编程带来很大的麻烦,本节将主要叙述标准外设库中的相关规范,通过这些规范的学习可以更加灵活的使用固件库,同时也将极大增强程序的规范性和易读性,同时标准外设库中的这种规范也值得我们在进行其他相关的开发时使用和借鉴。 a.缩写定义 标准外设库中的主要外设均采用了缩写的形式,通过这些缩写可以很容易的辨认对应的外设。

stm32入门C语言详解

阅读flash:芯片内部存储器flash操作函数我的理解——对芯片内部flash进行操作的函数,包括读取,状态,擦除,写入等等,可以允许程序去操作flash上的数据。 基础应用1,FLASH时序延迟几个周期,等待总线同步操作。推荐按照单片机系统运行频率,0—24MHz时,取Latency=0;24—48MHz时,取Latency=1;48~72MHz时,取Latency=2。所有程序中必须的 用法:FLASH_SetLatency(FLASH_Latency_2); 位置:RCC初始化子函数里面,时钟起振之后。 基础应用2,开启FLASH预读缓冲功能,加速FLASH的读取。所有程序中必须的 用法:FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); 位置:RCC初始化子函数里面,时钟起振之后。 3、阅读lib:调试所有外设初始化的函数。 我的理解——不理解,也不需要理解。只要知道所有外设在调试的时候,EWRAM需要从这个函数里面获得调试所需信息的地址或者指针之类的信息。 基础应用1,只有一个函数debug。所有程序中必须的。 用法:#ifdef DEBUG debug(); #endif 位置:main函数开头,声明变量之后。 4、阅读nvic:系统中断管理。 我的理解——管理系统内部的中断,负责打开和关闭中断。 基础应用1,中断的初始化函数,包括设置中断向量表位置,和开启所需的中断两部分。所有程序中必须的。 用法:void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; //中断管理恢复默认参数 #ifdef VECT_TAB_RAM //如果C/C++ Compiler\Preprocessor\Defined symbols中的定义了 VECT_TAB_RAM(见程序库更改内容的表格) NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); //则在RAM调试 #else //如果没有定义VECT_TAB_RAM NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);//则在Flash里调试 #endif //结束判断语句 //以下为中断的开启过程,不是所有程序必须的。 //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC优先级分组,方式。 //注:一共16个优先级,分为抢占式和响应式。两种优先级所占的数量由此代码确定, NVIC_PriorityGroup_x可以是0、1、2、3、4,分别代表抢占优先级有1、2、4、8、16个和响应优先级有16、8、4、2、1个。规定两种优先级的数量后,所有的中断级别必须在其中选择,抢占级别高的会打断其他中断优先执行,而响应级别高的会在其他中断执行完优先执行。 //NVIC_InitStructure.NVIC_IRQChannel = 中断通道名; //开中断,中断名称见函数库 //NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占优先级 //NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //响应优先级 //NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //启动此通道的中断 //NVIC_Init(&NVIC_InitStructure); 中断初始化

stm32库函数解释

部分库函数简介 一、通用输入/输出(GPIO)--------------------------------------------------------------------------------------------3 二、外部中断/事件控制器(EXTI)-----------------------------------------------------------------------------------7 三、通用定时器(TIM)-------------------------------------------------------------------------------------------------9四:ADC寄存器------------------------------------------------------------------------25 五:备份寄存器(BKP)-------------------------------------------------------------------------------------------------33 六、DMA控制器(DMA)---------------------------------------------------------------37 七、复位和时钟设置(RCC)------------------------------------------------------------------------------------------41 八、嵌套向量中断控制器(NVIC)-----------------------------------------------------------------------------------49

奋斗版STM32开发板Mini板硬件说明书

奋斗版STM32开发板Mini板的硬件说明 1. 供电电路: AMS1117-3.3输入+5V,提供3.3V的固定电压输出,为了降低电磁干扰,C1-C5为CPU 提供BANK电源(VCC:P50、P75、P100、P28、P11 GND:P49、P74、P99、P27、P10)滤波。CPU的模拟输入电源供电脚VDDA(P22)通过L1 22uH的电感与+3.3V VDD电压连接,CPU的模拟地VSSA(P19)及VREF-(P20)通过R1 0欧电阻与GND连接。VREF+(P21)采用VDDA(P22)电源基准。 为RTC的备份电源采用V1 3.3V锂离子片状电池。 2. 启动方式设置: Boot1—Boot0(P37,P94): x0: 内部程序存储区启动01:系统存储区启动(为异步通信ISP编程方式) 在此将BOOT1始终设置为0, BOOT0为可变的状态,在正常模式下将其置为0,在ISP 编程时将其置为1。用JP1跳线块设置,开路为ISP模式,短路为正常运行模式。 3. 时钟源电路: 外部晶体/陶瓷谐振器(HSE)(P12、P13):B1:8MHz晶体谐振器,C8,C9谐振电容选择10P。系统的时钟经过PLL模块将时钟提高到72MHz。 低速外部时钟源(LSE)(P8、P9):B2: 32.768KHz晶体谐振器。C10,C11谐振电容选择

10P。注意:根据ST公司的推荐, B2要采用电容负载为6P的晶振,否则有可能会出现停振的现象。 4. SPI存储电路: D2 AT45DB161(2M Bytes)CPU采用SPI1端口PA7-SPI1-MOSI(P32)、PA6-SPI1-MISO (P31)、PA5-SPI1-SCK(P30)、PA4-SPI1-NSS(P29)控制读写访问, SPI1地址:0x4000 3800 - 0x4000 3BFF 5. 显示及触摸接口模块: 显示器采用2.4” TFT320X240LCD(控制器ILI9325), 采用CPU的FSMC功能,LCD片选CS采用FSMC_NE1(P88),FSMC_A16(P58)作为LCD的RS选择,FSMC_nWE(P86)作为LCD的/WR, FSMC_nOE(P85)作为LCD的/RD, LCD的RESET脚用CPU的PE1(P98)(LCD-RST),FSMC_D0---FSMC_D15和LCD的D1-D8 D10-D17相互连接,触摸屏接口采用SPI1接口,片选为PB7-SPI1-CS3,由于LCD背光采用恒流源芯片PT4101控制,采用了PWM控制信号控制背光的明暗, PWM信号由PD13-LIGHT-PWM来控制。触摸电路的中断申请线由PB6-7846-INT接收。 LCD寄存器地址为:0x6000 0000, LCD数据区地址:0x6002 0000。

理解__STM32__GPIO初始化__库函数

使用库函数进行STM32的产品开发无疑可以节省大量时间。下面将介绍GPIO 初始化所用到的库函数 以最常用的GPIO设备的初始化函数为例,如下程序段一: GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_Init(GPIOA,&GPIO_InitStructure) 这是一个在STM32的程序开发中经常使用到的GPIO初始化程序段,其功能是将GPIOA.4口初始化为推挽输出状态,并最大翻转速率为50MHz。下面逐一分解:l 首先是1,该语句显然定义了一个GPIO_InitTypeDef类型的变量,名为 GPIO_InitStructure,则找出GPIO_InitTypeDef的原型位于 “stm32f10x_gpio.h”文件,原型如下: typedef struct { u16GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode; }GPIO_InitTypeDef; 由此可知GPIO_InitTypeDef是一个结构体类型同义字,其功能是定义一个结构体,该结构体有三个成员分别是u16类型的GPIO_Pin、 GPIOSpeed_TypeDef类型的GPIO_Speed和GPIOMode_TypeDef类型的 GPIO_Mode。继续探查GPIOSpeed_TypeDef和GPIOMode_TypeDef类型,在“stm32f10x_gpio.h”文件中找到对GPIOSpeed_TypeDef的定义: typedef enum { GPIO_Speed_10MHz=1, GPIO_Speed_2MHz, GPIO_Speed_50MHz }GPIOSpeed_TypeDef; 则可知GPIOSpeed_TypeDef枚举类型同一只,其功能是定义一个枚举类型变量,该变量可表示GPIO_Speed_10MHz、GPIO_Speed_2MHz和 GPIO_Speed_50MHz三个含义(其中GPIO_Speed_10MHz已经定义为1,读者必须知道GPIO_Speed_2MHz则依次被编译器赋予2,而GPIO_Speed_50MHz 为3)。 同样也在“stm32f10x_gpio.h”文件中找到对GPIOMode_TypeDef的定义: typedef enum

STM32固件库详解42324

STM32固件库详解 最近考试较多,教材编写暂停了一下,之前写了很多,只是每一章都感觉不是特别完整,最近把其中的部分内容贴出来一下,欢迎指正。本文内容基于我对固件库的理解,按照便于理解的顺序进行整理介绍,部分参考了固件库的说明,但是也基本上重新表述并按照我理解的顺序进行重新编写。我的目的很简单,很多人写教程只是告诉你怎么做,不会告诉你为什么这么做,我就尽量吧前因后果都说清楚,这是我的出发点,水平所限,难免有很大的局限性,具体不足欢迎指正。基于标准外设库的软件开发 STM32标准外设库概述 STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API,通过使用固件函数库,无需深入掌握底层硬件细节,开发者就可以轻松应用每一个外设。因此,使用固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。每个器件的开发都由一个通用API (application programming interface 应用编程界面)驱动,API对该驱动程序的结构,函数和参数名称都进行了标准化。

ST公司2007年10月发布了版本的固件库,MDK 之前的版本均支持该库。2008年6月发布了版的固件库,从2008年9月推出的MDK 版本至今均使用版本的固件库。以后的版本相对之前的版本改动较大,本书使用目前较新的版本。 使用标准外设库开发的优势 简单的说,使用标准外设库进行开发最大的优势就在于可以使开发者不用深入了解底层硬件细节就可以灵活规范的使用每一个外设。标准外设库覆盖了从GPIO到定时器,再到CAN、I2C、SPI、UART和ADC 等等的所有标准外设。对应的C源代码只是用了最基本的C编程的知识,所有代码经过严格测试,易于理解和使用,并且配有完整的文档,非常方便进行二次开发和应用。 STM32F10XXX标准外设库结构与文件描述 1. 标准外设库的文件结构 在上一小节中已经介绍了使用标准外设库的开发的优势,因此对标准外设库的熟悉程度直接影响到程序的编写,下面让我们来认识一下STM32F10XXX的标准外设库。STM32F10XXX的标准外设库经历众多的更新目前已经更新到最新的版本,开发环境中自带的标准外设库为版本,本书中以比较稳定而且较新的版本为基础介绍标准外设库的结构。

金龙STM32F207开发板用户手册

1.概述 金龙STM32开发板用户手册芯片描述 -ARM32-bit Cortex-M3CPU -120MHz maximum frequency,150DMIPS/1.25DMIPS/MHz -Memory protection unit Memories -Up to1Mbyte of Flash memory -Up to128+4Kbytes of SRAM -Flexible static memory controller (supports Compact Flash,SRAM,PSRAM,NOR,NAND memories) -LCD parallel interface,8080/6800modes Clock,reset and supply management -1.8to3.6V application supply and I/Os -POR,PDR,PVD and BOR -4to25MHz crystal oscillator -Internal16MHz factory-trimmed RC -32kHz oscillator for RTC with calibration -Internal32kHz RC with calibration Low power -Sleep,Stop and Standby modes -VBAT supply for RTC, C32bit backup registers 20 optional4KB backup SRAM C12-bit,0.5us A/D converters 3 -up to24channels -up to6MSPS in triple interleaved mode C12-bit D/A converters 2 General-purpose DMA -16-stream DMA controller centralized FIFOs and burst support Up to17timers -Up to twelve16-bit and two32-bit timers Debug mode -Serial wire debug(SWD)&JTAG interfaces -Cortex-M3Embedded Trace Macrocell Up to140fast I/O ports with interrupt capability -51/82/114/140I/Os,all5V-tolerant Up to15communication interfaces C I2C interfaces(SMBus/PMBus) -Up to3 -Up to6USARTs(7.5Mbit/s,ISO7816interface,LIN,IrDA,modem control)

献给新手:解析STM32的库函数

意法半导体在推出STM32微控制器之初,也同时提供了一套完整细致的固件开发包,里面包含了在STM32开发过程中所涉及到的所有底层操作。通过在程序开发中引入这样的固件开发包,可以使开发人员从复杂冗余的底层寄存器操作中解放出来,将精力专注应用程序的开发上,这便是ST推出这样一个开发包的初衷。 但这对于许多从51/AVR这类单片机的开发转到STM32平台的开发人员来说,势必有一个不适应的过程。因为程序开发不再是从寄存器层次起始,而要首先去熟悉STM32所提供的固件库。那是否一定要使用固件库呢?当然不是。但STM32微控制器的寄存器规模可不是常见的8位单片机可以比拟,若自己细细琢磨各个寄存器的意义,必然会消耗相当的时间,并且对于程序后续的维护,升级来说也会增加资源的消耗。对于当前“时间就是金钱”的行业竞争环境,无疑使用库函数进行STM32的产品开发是更好的选择。本文将通过一个简单的例子对STM32的库函数做一个简单的剖析。 以最常用的GPIO设备的初始化函数为例,如下程序段一: GPIO_InitTypeDef GPIO_InitStructure; 1 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; 2 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 3 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 4 GPIO_Init(GPIOA , &GPIO_InitStructure 5 这是一个在STM32的程序开发中经常使用到的GPIO初始化程序段,其功能是将GPIOA.4口初始化为推挽输出状态,并最大翻转速率为50MHz。下面逐一分解: 首先是1,该语句显然定义了一个GPIO_InitTypeDef类型的变量,名为GPIO_InitStructure,则找出GPIO_InitTypeDef的原型位于“stm32f10x_gpio.h” 文件,原型如下: typedef struct { u16 GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode; }GPIO_InitTypeDef; 由此可知GPIO_InitTypeDef是一个结构体类型同义字,其功能是定义一个结构体,该结构体有三个成员分别是u16类型的GPIO_Pin、 GPIOSpeed_TypeDef 类型的GPIO_Speed和GPIOMode_TypeDef 类型的 GPIO_Mode。继续探查GPIOSpeed_TypeDef和GPIOMode_TypeDef类型,在“stm32f10x_gpio.h”文件中找到对GPIOSpeed_TypeDef的定义: typedef enum { GPIO_Speed_10MHz = 1,

STM32F429开发板用户手册

STM32F429开发板用户手册 介绍 STM32F429(32F429IDISCOVERY)开发板可以帮助你去学习高性能STM32F4系列,并去开发你自己的应用。它包含了一个STM32F429ZIT6和一个嵌入ST-LINK/V2调试接口,2.4吋TFTLCD,64MbitsSDRAM,ST微机电陀螺仪,按键和USB OTG接口。

1约定 下表提供了一些约定惯例,目前的文档可能会用到。

2快速入门 STM32F429开发板是一种廉价且易于上手的开发套件,可以让使用者快速评估和开始STM32F4的开发工作。 在安装和使用产品以前,请接收评估产品许可协议。 2.1启动 跟随以下顺序来设置STM32F429开发板并开始开发应用: 1、确认跳线JP3和CN4被设置为“on”(开发模式) 2、连接STM32F429Discovery开发板CN1到PC,使用USB电缆(type A/mini-B),开发板上电。 3、屏幕上以下应用可用: 时钟日历和游戏 视频播放器和图片浏览器(播放浏览USB大容量存储器上的视频和图片)性能显示器(观察CPU负载和图形测试) 系统信息 4、演示软件,也像其他软件例程,运行你用来开发STM32F4。 5、从例程开始开发你自己的应用吧。 2.2系统要求 ?Windows PC(XP,Vista,7) ?USB type A to mini-B cable 2.3支持STM32F429开发板的开发工具 ?Altium:TASKING?VX-Toolset ?Atollic:TrueSTUDIO ?IAR:EWARM ?Keil?:MDK-ARM 2.4订购码 要订购STM32F429Discovery kit,请使用STM32F429I-DISCO订购码。 3特性 STM32F429Discovery开发板提供一下特性: ?S TM32F429ZIT6具有2MB闪存,256KB的RAM,LQFP144封装。 ?板载ST-LINK/V2,带有选择模式跳线,可以作为独立的ST-LINK/V2使用。 ?板电源:通过USB总线或外部3V或5V电源。 ?L3GD20:ST微机电动作传感器,3轴数字输出陀螺仪 ?TFT LCD,2.4寸,262K色RGB,240*230分辨率 ?SDRAM64Mbits(1Mbit x16-bit x4-bank),包含自动刷新模式和节能模式 ?六个LED: LD1(红绿):USB通信 LD2(红):3.3V电源 两个用户LED LD3(绿),LD4红 两个USBOTG LED:LD5(绿)VBUS和LD6OC(过流) ?两个按键(user and reset)

STM32F4库函数笔记

(1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入 (3)GPIO_Mode_IPD 下拉输入 (4)GPIO_Mode_IPU 上拉输入 (5)GPIO_Mode_Out_OD 开漏输出 (6)GPIO_Mode_Out_PP 推挽输出 (7)GPIO_Mode_AF_OD 复用开漏输出 (8)GPIO_Mode_AF_PP 复用推挽输出 平时接触的最多的也就是推挽输出、开漏输出、上拉输入这三种 推挽输出:可以输出高,低电平,连接数字器件; 开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行,一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平。 浮空输入:由于浮空输入一般多用于外部按键输入,结合图上的输入部分电路,我理解为浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。 GPIO GPIO_Init函数初始化 { 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_InitStructure);//初始化GPIOF9,F10 } 2个读取输入电平函数: uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 作用:读取某个GPIO的输入电平。实际操作的是GPIOx_IDR寄存器。 例如: GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_5);//读取GPIOA.5的输入电平 uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx); 作用:读取某组GPIO的输入电平。实际操作的是GPIOx_IDR寄存器。 例如: GPIO_ReadInputData(GPIOA);//读取GPIOA组中所有io口输入电平 2个读取输出电平函数: uint8_t GPIO_ReadOutputDataBit (GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 作用:读取某个GPIO的输出电平。实际操作的是GPIO_ODR寄存器。 例如:

STM32 NUCLEO板用户手册

April 2014DocID025833 Rev 3 1/49 Introduction The STM32 Nucleo board (NUCLEO-F030R8, NUCLEO-F072RB, NUCLEO-F103RB, NUCLEO-F302R8, NUCLEO-F401RE, NUCLEO-L152RE ) provides an affordable and flexible way for users to try out new ideas and build prototypes with any STM32 microcontroller lines, choosing from the various combinations of performance, power consumption and features. The Arduino ? connectivity support and ST Morpho headers make it easy to expand the functionality of the Nucleo open development platform with a wide choice of specialized shields. The STM32 Nucleo board does not require any separate probe as it integrates the ST-LINK/V2-1 debugger/programmer. The STM32 Nucleo board comes with the STM32 comprehensive software HAL library together with various packaged software examples, as well as direct access to mbed online resources at https://www.360docs.net/doc/5417677811.html, . (1) 1.Picture not contractual. https://www.360docs.net/doc/5417677811.html,

STM32固件库详解

STM32固件库详解 https://www.360docs.net/doc/5417677811.html,/emouse/archive/2011/11/29/2268441.html 1.1 基于标准外设库的软件开发 1.1.1 STM32标准外设库概述 STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API,通过使用固件函数库,无需深入掌握底层硬件细节,开发者就可以轻松应用每一个外设。因此,使用固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。每个器件的开发都由一个通用API (application programming interface 应用编程界面)驱动,API对该驱动程序的结构,函数和参数名称都进行了标准化。 ST公司2007年10月发布了V1.0版本的固件库,MDK ARM3.22之前的版本均支持该库。2008年6月发布了V2.0版的固件库,从2008年9月推出的MDK ARM3.23版本至今均使用V2.0版本的固件库。V3.0以后的版本相对之前的版本改动较大,本书使用目前较新的V3.4版本。 1.1.2 使用标准外设库开发的优势 简单的说,使用标准外设库进行开发最大的优势就在于可以使开发者不用深入了解底层硬件细节就可以灵活规范的使用每一个外设。标准外设库覆盖了从GPIO到定时器,再到CAN、I2C、SPI、UART和ADC等等的所有标准外设。对应的C源代

stm32启动文件详解

STM32启动文件详解 一、启动文件的作用 1.初始化堆栈指针SP; 2.初始化程序计数器指针PC; 3.设置堆、栈的大小; 4.设置异常向量表的入口地址; 5.配置外部SRAM作为数据存储器(这个由用户配置,一般的开发板可没有外部SRAM); 6.设置C库的分支入口__main(最终用来调用main函数); 7.在版的启动文件还调用了在文件中的SystemIni()函数配置系统时钟。

二、汇编指令

三、启动代码 ----- 栈 Stack_Size EQU 0x00000400 ; 栈的大小 AREA STACK, NOINIT, READWRITE,ALIGN=3 Stack_Mem SPACE Stack_Size ; 分配栈空间 __initial_sp ; 栈的结束地址(栈顶地址) 分配名为STACK,不初始化,可读可写,8(2^3)字节对齐的1KB空间。 栈:局部变量,函数形参等。栈的大小不能超过内部SRAM大小。 AREA:汇编一个新的代码段或者数据段。STACK段名,任意命名;NOINIT表示不初始化;READWRITE可读可写;ALIGN=3(2^3= 8字节对齐)。 __initial_sp紧挨了SPACE放置,表示栈的结束地址,栈是从高往低生长,结束地址就是栈顶地址。

----- 堆 Heap_Size EQU 0x00000200 ; 堆的大小(512Bytes) AREA HEAP, NOINIT, READWRITE,ALIGN=3 __heap_base ; 堆的起始地址 Heap_Mem SPACE Heap_Size ; 分配堆空间 __heap_limit ; 堆的结束地址 分配名为HEAP,不初始化,可读可写,8(2^3)字节对齐的512字节空间。__heap_base堆的起始地址,__heap_limit堆的结束地址。堆由低向高生长。动态分配内存用到堆。 PRESERVE8 -- 指定当前文件的堆/栈按照8 字节对齐。 THUMB-- 表示后面指令兼容THUMB 指令。THUBM 是ARM 以前的指令集,16bit;现在Cortex-M 系列的都使用THUMB-2 指令集,THUMB-2 是32 位的,兼容16 位和32 位的指令,是THUMB 的超级。 3.向量表 AREA RESET, DATA, READONLY EXPORT __Vectors E XPORT __Vectors_End E XPORT __Vectors_Size 定义一个名为RESET,可读的数据段。并声明__Vectors、__Vectors_End 和__Vectors_Size 这三个标号可被外部的文件使用。 __Vectors DCD __initial_sp ; Top of Stack DCD Reset_Handler ; Reset Handler

STM32_WIFI开发板开发指南及使用说明-V0.32

北京世讯电子技术有限公司
STM32 WIFI 开发板开发指南及教程
欢迎选用世讯电子的开发板! 注意: 注意:如果你是初学者, 如果你是初学者,务必仔细 务必仔细阅读 仔细阅读每节内容 阅读每节内容! 每节内容! 1. 使用指南
1.1 adhoc 模式工作( 模式工作(板子默认 wifi 工作模式) 工作模式)
拿到板子后, ,先不要下载程序, 1) 拿到板子后 先不要下载程序,先给板子上电, 先给板子上电,测试运行一下! 测试运行一下! 2) 观看开发板上的指示灯, 观看开发板上的指示灯,等到 WIFI 模块旁边的 LED 不闪烁了。 不闪烁了。 3) 打开电脑的 wifi, 搜索一下, 搜索一下,看看能不能找到“ 看看能不能找到“ShiXun_ADHOC”这样的网 络,如下图所示
4) 如果不能找到“ 如果不能找到“ShiXun_ADHOC”网络, 网络,需先恢复出厂设置, 需先恢复出厂设置,具体查看 1.2
恢复出厂设置模式
5) 在电脑上选中“ 在电脑上选中“ShiXun_ADHOC”网络, 网络,输入密码“ 输入密码“1234567890123”然后 选择连接。 选择连接。 6) 然后等待, 然后等待,这个过程有点长, 这个过程有点长,几十秒甚至 几十秒甚至 1 分多钟。 分多钟。 7) 等 wifi 模块旁边的 D6(LED)指示常亮 指示常亮了 常亮了,说明网络连接上了。 说明网络连接上了。说明板子工 作正常。 作正常。如下所示
Rev 0.32
Confidential Copyright@2014 by Shixun Electronic Inc
-
1-

STM32库函数功能详解

STM32库函数简介 一、通用输入/输出(GPIO)--------------------------------------------------------------------------------------------3 二、外部中断/事件控制器(EXTI)-----------------------------------------------------------------------------------7 三、通用定时器(TIM)-------------------------------------------------------------------------------------------------9 四:ADC寄存器------------------------------------------------------------------------25 五:备份寄存器(BKP)-------------------------------------------------------------------------------------------------33 六、DMA控制器(DMA)---------------------------------------------------------------37 七、复位和时钟设置(RCC)------------------------------------------------------------------------------------------41 八、嵌套向量中断控制器(NVIC)-----------------------------------------------------------------------------------49

STM32核心板

STM32F407VET6 Mini最小系统 产品简介: 这是一款基于STM32F407VET6为主芯片的ARM核心板,有如下特点: 1、板载了基于MCU的最基本电路,如晶振电路、USB电源管理电路和USB接口等。 2、核心板引出了所有的I/O口资源。 3、带有SWD仿真调试下载接口,该接口最少需要3根线就可以完成调试下载任务,相比传统的JTAG调试有不少的好处,在这里插一句,JTAG现在大有要淘汰的趋势,例如ST 新出的M0系列的MCU只保留了SWD调试接口,JTAG直接取消了。 4、使用了目前智能手机所使用的Mirco USB接口,使用方便,可做USB通讯和供电。 5、核心板的系统晶振(25MHz)使用精度极高质量上乘低负载NDK公司的NX5032GA,而没有使用价格低廉的铁壳晶振。 6、针对STM32 RTC不起振的问题,我们采用了官方建议的低负载RTC晶振方案,并使用了爱普生品牌的晶振,而没有使用廉价的圆柱晶振。 7、核心板配有EEPROM,型号为AT24C08方便核心板进行数据存储。 8、电源稳压芯片采用的是rf级别的LDO为MCU的运行提供了良好的供电环境。 9、配有相应的优质2.54mm间距的双排排针,确保导电接触优良,方便用户将核心板放置到标准的的万用板或者面包板上。排针默认不焊接,用户可以根据自己的需要选择焊接方向。

资源简介: 有客户反映使用我们家STM32F407VET6\STM32F407ZGT6核心板,下载网上收集的程序后不能再次下载或运行也不是正常现象,这有可能是下载的程序时钟没有与我们核心板上的晶振进行匹配,例如有客户使用我们的407核心板下载了正点原子例程发现无法再次下载,是因为原子哥写的程序大部分运行在外部8M晶振上的,而我们晶振是25M.需要在程序方面稍微修改过几个地方就可以做到程序兼容,不必费劲修改过硬件晶振。 以下是修改以8M外部晶振编写程序改为适合外部晶振为25M修改方法。 修改的地方之一:stm32f4xx.h里面找到HSE_VALUE,具体#define HSE_VALUE ((uint32_t)8000000) ,现把它修改为#define HSE_VALUE ((uint32_t)25000000) (实际晶振对应的批量) 修改的地方之二:系统通过PLL倍频到168M,所以在配置PLL的时候,也需要作相应的修改。在system_stm32f4xx.c里,的配置为以下: #define PLL_M 8 需要把PLL_M由8修改为25(实际晶振频率对应数值),不然会超频到336M的主频,使STM32不能正常工作,常见表现为掉进HardFault_Handler()中。 其他晶振皆可以参考上述方法进行相应修改。 芯片简介: 1、STM32F407VET6 封装类型:LQFP; 引脚个数:100; 内核:Cortex?-M4;

相关文档
最新文档