stm32f107引脚功能
STM32F107开发板原理图(功能完整)
D
uC-EVAL Ethernet
Rev: A.1(PCB.SCH) Date: 4/2/2009 4 Sheet 4 of
11
Number:MB834 1 2 3
1
2
3
4
A LED1 PE14
LED2
PD13
LED3 CN3 PA4 PB0 PB1 PB9 PB14 PB15 PC0 PC4 PC5 PC6 PC7 PC8 PC9 PC10 PC11 PC12 PC13 PD2 PD7 PE0 RESET# C 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 PE3 PE4 PB3 PB4 PE7 PE8 PE9 PE10 PE11 PE12 PE13 PE14 PE15 PD6 PD5 PD4 PD3 PA15 PE2 PA13 PA14 CAN_L CAN_H
E_JRST E_JTDO E_JTDI E_JTCK
VDD_3 VSS_3 PB9 PB8 BOOT0 PB7 PB6 PB5 PB4 PB3 PA15 PA14
+3V3 VDD_2 VSS_2 PA13 PA12 PA11 PA10 PA9 PA8 PB15 PB14 PB13 PB12 36 35 34 33 32 31 30 29 28 27 26 25
DDP DDM TDOin ATTACH TDOin TDIout TCKout LED
+3V3
C
USB-miniB connector
(完整版)stm32f407引脚分配表
OLED/CAMERA接口的D1脚
98
PC8
SDIO_D0
DCMI_D2
N
1,SD卡接口的D0
2,OLED/CAMERA接口的D2脚
99
PC9
SDIO_D1
DCMI_D3
N
1,SD卡接口的D1
2,OLED/CAMERA接口的D3脚
111
PC10
SDIO_D2
N
SD卡接口的D2
112
PC11
SDIO_D3
PF6
GBC_KEY
Y
接ATK-MODULE接口的KEY脚
19
PF7
LIGHT_SENSOR
N
接光敏传感器(LS1)
20
PF8
BEEP
N
接蜂鸣器(BEEP)
21
PF9
LED0
N
接DS0 LED灯(红色)
22
PF10
LED1
N
接DS1 LED灯(绿色)
49
PF11
T_MOSI
Y
TFTLCD接口触摸屏MOSI信号
如不用LAN8720,并去掉P9跳线帽,可以做普通IO用
该IO通过P9选择连接RS232还是RS485,并同时连接了PWM_DAC, 这里的RS232 TX脚是指SP3232芯片的TX脚,接STM32的RX脚
去掉P9跳线帽,可以做普通IO用
该IO可做DAC输出,同时也连接在OLED/CAMERA接口,如不插外设在OLED/CAMERA接口,
137
PB7
DCMI_VSYNC
Y
OLED/CAMERA接口的VSYNC脚
139
PB8
IIC_SCL
STM32F105xx 107xx 数据手册
参照2011年8月 STM32F105xx 107xx数据手册 英文第6版 (本译文仅供参考,如有翻译错误,请以英文原稿为准)
STM32F105xx 107xx数据手册
目录
1 2 介绍 ............................................................................................................................................................ 4 规格说明 ..................................................................................................................................................... 5 2.1 2.2 2.3 器件一览 ......................................................................................................................................... 5 系列之间的全兼容性 ....................................................................................................................... 6 概述 .............................................................................................
第3章 GPIO和AFIO
读出 至自片上外设 复用功能输入
TTL 肖特基触发器
输入数据寄存器 GPIOx_IDR 开/关
施密特触发输入被激活。
弱上拉和下拉电阻被禁止。 在每个APB2时钟周期,出现在I/O 脚 上的数据被采样到输入数据寄存器。
}
- 14 -
GPIO编程实例 --GPIO配置
GPIO的配置,可以调用固件库的GPIO_Init( )函数。 GPIO_Init( )函数的原型如下:
GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
参数GPIOx
- 12 -
复用功能IO重映射
GPIO_Remap GPIO_Remap_SPI1 GPIO_Remap_I2C1 GPIO_Remap_USART1 GPIO_Remap_USART1 GPIO_PartialRemap_USART3 GPIO_FullRemap_USART3 GPIO_PartialRemap_TIM1 GPIO_FullRemap_TIM1 GPIO_PartialRemap1_TIM2 GPIO_PartialRemap2_TIM2 GPIO_FullRemap_TIM2 GPIO_PartialRemap_TIM3 GPIO_FullRemap_TIM3 GPIO_Remap_TIM4 GPIO_Remap1_CAN GPIO_Remap2_CAN GPIO_Remap_PD01 GPIO_Remap_SWJ_NoJTRST 描述 SPI1 复用功能映射 I2C1复用功能映射 USART1 复用功能映射 USART2 复用功能映射 USART3 复用功能完全映射 USART3 复用功能部分映射 TIM1复用功能部分映射 TIM1复用功能完全映射 TIM2复用功能部分映射 1 TIM2复用功能部分映射 2 TIM2复用功能完全映射 TIM3复用功能部分映射 TIM3复用功能完全映射 TIM4复用功能映射 CAN复用功能映射1 CAN复用功能映射2 PD01复用功能映射 除JTRST 外SWJ 完全使能 (JTAG+SW-DP)
STM32_参考手册-中文
23 串行外设接口(SPI)小容量产品是指闪存存储器容量在16K 至32K 字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。
中容量产品是指闪存存储器容量在64K至128K字节之间的STM32F101xx、STM32F102xx 和STM32F103xx微控制器。
大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx微控制器。
互联型产品是指STM32F105xx和STM32F107xx微控制器。
除非特别说明,本章描述的模块适用于整个STM32F10xxx微控制器系列。
23.1 SPI简介在大容量产品和互联型产品上,SPI接口可以配置为支持SPI协议或者支持I2S音频协议。
SPI接口默认工作在SPI方式,可以通过软件把功能从SPI模式切换到I2S模式。
在小容量和中容量产品上,不支持I2S音频协议。
串行外设接口(SPI)允许芯片与外部设备以半/全双工、同步、串行方式通信。
此接口可以被配置成主模式,并为外部从设备提供通信时钟(SCK)。
接口还能以多主配置方式工作。
它可用于多种用途,包括使用一条双向数据线的双线单工同步传输,还可使用CRC校验的可靠通信。
I2S也是一种3引脚的同步串行接口通讯协议。
它支持四种音频标准,包括飞利浦I2S标准,MSB 和LSB对齐标准,以及PCM标准。
它在半双工通讯中,可以工作在主和从2种模式下。
当它作为主设备时,通过接口向外部的从设备提供时钟信号。
警告:由于SPI3/I2S3 的部分引脚与JTAG 引脚共享(SPI3_NSS/I2S3_WS 与JTDI ,SPI3_SCK/I2S3_CK与JTDO),因此这些引脚不受IO控制器控制,他们(在每次复位后) 被默认保留为JTAG用途。
如果用户想把引脚配置给SPI3/I2S3,必须(在调试时)关闭JTAG并切换至SWD接口,或者(在标准应用时)同时关闭JTAG和SWD接口。
6.3 STM32F107VCT的时钟深入剖析(32M,40M,72M灵活切换)
RCC->CFGR2 |= 4<<4; // 5 分频
6.1.2 STM32的时钟
系统时钟的选择是在启动时进行,复位时内部 8MHZ 的 RC 振荡器被选为默认的 CPU 时钟,随后可以选择外部的、具失效监控的 3-25MHZ 时钟;当检测到外部时钟失效时,它 将被隔离,系统将自动地切换到内部的 RC 振荡器。
在 STM32 中,有五个时钟源,为 HSI、HSE、LSI、LSE、PLL,它们都是时钟所提供 的来源: 1. HSI 是高速内部时钟,RC 振荡器,频率默认为 8MHz,可以从 STM32 时钟树中看到
RCC->CFGR2 |= 6<<8; //8 倍频
RCC->CFGR2 |= 1<<16; //PLL2 作为 PRED2V1 时钟 RCC->CR |= 1<<26; //将 PLL2 使能
while(!(RCC->CR>>27));
RCC->CFGR2 |= 0x00000004; //5 分频 RCC->CFGR |= 1<<16; //PREDIV1 作为 PLL 时钟 RCC->CFGR |= 2<<18; //本例程希望设置成 32MHZ 的工作频率,我们在这里尝试
下表是结合图表明出来的: 标号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
第3章 GPIO和AFIO汇总
读/写 来自片上外设
输出数据寄存器 GPIOx_ODR 输出控制
N-MOS
复用功能输出
推挽、 开漏或 V 关闭
SS
-5-
通用IO和复用功能--GPIO概述
STM32F107的GPIO的特点如下: 复位期间和刚复位后,复用功能未开启,I/O端口被配置成浮空输入模 式。 所有GPIO引脚有一个内部弱上拉和弱下拉,当配置为输入时,它们可 以被激活也可以被断开。
-4-
通用IO和复用功能--GPIO概述
模拟输入 至自片上外设 复用功能输入
TTL 肖特基触发器
VDD
开/关
读出
输入数据寄存器 GPIOx_IDR 开/ 关 开/关
VSS
VDD
保护二极管 I/O引脚 保护二极管
输入驱动器 写入
位设置/清除寄存器 GPIOx_BSRR
输出驱动器
VDD
P-MOS
VSS
GPIO作为模拟输入时的结构框图 当I/O 端口被配置为模拟输入配 置时:
输出缓冲器被禁止。 禁止施密特触发输入,实现了
至自片上外设 模拟输入
TTL 肖特基触发器
读出
输入数据寄存器 GPIOx_IDR 关
VDD 输入驱动器 写入
位设置/清除寄存器 GPIOx_BSRR 保护二极管 I/O引脚 保护二极管
GPIO作为输入时的结构框图 当I/O 端口配置为输入时:
输出缓冲器被禁止。 施密特触发输入被激活。 根据输入配置(上拉,下拉或浮
读出
输入数据寄存器 GPIOx_IDR 开 开/关
TTL 肖特基触发器
VDD
开/关
动)的不同,弱上拉和下拉电阻
被连接。 出现在I/O 脚上的数据在每个 APB2时钟被采样到输入数据寄 存器。 对输入数据寄存器的读访问可得 到I/O 状态。
STM32F107VCT6 微控制器用户手册说明书
Open107V用户手册目录1. 硬件介绍 (2)1.1.资源简介 (2)2. 例程分析 (4)2.1. 8Ios (4)2.2. ADC+DMA (4)2.3. ADC+DMA+KEYPAD (5)2.4. CAN- Normal (5)2.5. DAC (6)2.6. ETH_LwIP (6)2.7. GPIO LED JOYSTICK (7)2.8. I2C (7)2.9. LCD (8)2.10. OneWire (9)2.11. PS2 (9)2.12. RTC (9)2.13. FATFS V0.08A-SD Card (10)2.14. SL811 USB (10)2.15. AT45DB-SPI (11)2.16. TouchPanel (11)2.17. uCOSII2.91+UCGUI3.90A (12)2.18. USART (13)2.19. USB_Host_HID_KBrd_Mouse (13)2.20. USB_ Host_MSC(efsl) (13)2.21. USB_Host_MSC(FATFS) (14)2.22. USB-JoyStickMouse (15)2.23. USB-Mass_Storage-MCU Flash (15)2.24. VS1003B (16)3. 版本修订 (16)1.硬件介绍1.1. 资源简介[ 芯片简介 ]1.STM32F107VCT6STM32功能强大,下面仅列出STM32F107VCT6的核心资源参数:内核:Cortex-M3 32-bit RISC;工作频率:72MHz,1.25 DMIPS/MHz;工作电压:2-3.6V;封装:LQFP100;I/O口:80;存储资源:256kB Flash,64kB RAM;接口资源:3 x SPI,3 x USART,2 x UART,2 x I2S,2 x I2C;1 x Ethernet MAC,1 x USB OTG,2 x CAN;模数转换:2 x AD(12位,1us,分时16通道),[ 其它器件简介 ]3."5V DC"或"USB"供电选择开关切换到上面,选择5V DC供电;切换到下面,选择USB供电。
stm32f107
工程组建
工程项目文件夹
工程项目树结构
注意keil工程项的设置
程序开始config
/* Private function prototypes -----------------------------------------------*/
void RCC_Configuration(void);设置系统sysclk,AHB(hclk), 低速AHB(PCLK1 ),高速AHB(PCLK2),USB时钟 (USBCLK),设置ADC时钟(ADCCLK),RTC时钟 (RTCCLK),及外围设备时钟使能 void GPIO_Configuration(void);设置基本输入输出状态 void NVIC_Configuration(void); 设置中断优先级
Stm32f10x_conf.h 除了包含头文件引用还有以下宏定义 #ifdef USE_FULL_ASSERT /** * @brief The assert_param macro is used for function's parameters check. * @param expr: If expr is false, it calls assert_failed function which reports * the name of the source file and the source line number of the call * that failed. If expr is true, it returns no value. * @retval None */ #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__)) /* Exported functions ------------------------------------------------------- */ void assert_failed(uint8_t* file, uint32_t line); #else #define assert_param(expr) ((void)0) #endif /* USE_FULL_ASSERT */
stm32f107 usbh主模式库解析
简介STM32F105/7 USB主模式库的目的是为USB主模式应用程序开发提供一个框架。
库代表了在STM32F105/7之上的USB OTG周边底层驱动。
它实现必要的软件块,目的是便于USB的主模式应用程序开发。
STM32F105/7USB主模式协议栈的库支持以下两个USB标准应用类:■大批量存储类(MSC)用于访问USB闪存pendrives■人机接口设备类(HID)用于键盘和鼠标设备目录1 USB的主模式包文件夹结构。
(6)2 USB主模式的库结构 (8)2.1库的结构框图 (8)2.2库内核的描述。
(9)2.2.1内核状态机。
(9)2.2.2设备枚举。
(10)2.2.3控制传输状态机。
(11)2.2.4 USB的I / O请求模块。
(11)2.2.5主模式通道控制模块。
(12)2.3类驱动程序。
(13)2.3.1 USB大批量存储类(MSC)驱动程序。
(13)2.3.2 USB人机接口设备类(HID)鼠标键盘设备驱动。
(17)3库用户API和回调函数。
(20)3.1库用户API。
(20)3.2用户的回调函数。
(20)3.2.1类的回调函数。
(20)3.2.2独立类的回调函数。
(22)4演示固件。
……. . 254.1大容量存储类演示。
…。
254.1.1软件初始化。
254.1.2大容量存储设备枚举。
254.1.3访问大容量存储器内容。
264.1.4 Flash pendrive测试。
264.2HID鼠标和键盘演示。
274.2.1初始化准备。
274.2.2鼠标或键盘设备枚举。
274.2.3 .鼠标演示。
284.2.4键盘演示。
284.3演示脚本。
285已知的限制。
(29)6修订历史。
(30)list of表表1 内核文件 (7)表2 class文件 (7)表3 枚举请求 (11)表4 USB的I / O请求模块 (12)表5 主模式通道控制模块 (12)表6 大容量存储类模块 (13)表7 MSC的内核模块 (15)表8 MSC BOT模块 (15)表9 MSC SCSI命令 (16)表10 MSC文件系统接口功能 (16)表11 efsl 主API (17)表12 HID类模块 (17)表13 MSC内核模块的功能 (18)表14 鼠标和键盘初始化和HID Report解码功能 (19)表15 测试U盘 (27)表16 演示的足迹 (28)表17文件修订历史 (30)数字表图1。
ARM体系结构与程序设计智慧树知到课后章节答案2023年下齐鲁师范学院
ARM体系结构与程序设计智慧树知到课后章节答案2023年下齐鲁师范学院齐鲁师范学院第一章测试1.以下不是ARM含义的是()。
答案:一种高级语言2.Cortex-M3内核支持的汇编指令集有()。
答案:2种3.Cortex-M3处理器是基于()架构。
答案:ARMv74.以下Cortex系列,面向多媒体应用的是()。
答案:Cortex-A5.根据STM32系列MCU的命名规范,STM32F103RBT6的Flash是()KB。
答案:1286.ARM公司本身不生产和销售半导体芯片,也不对外设计和许可。
()答案:错7.对于授权公司获得ARM授权的内核后,根据不同的应用领域,加入适当的外设,形成自己的ARM微处理器芯片。
()答案:对8.哈佛结构的数据和指令是分开编址的。
()答案:对9.对于内嵌有ARM处理器核心和采用ARM构架的处理器,被统称为____________。
答案:null10.对于STM32F107的最高主频是____MHz。
答案:null第二章测试1.关于CM3内核,下列说法正确的是()。
答案:CM3内核含有NVIC向量中断控制器2.CM3内核()GB的存储空间。
答案:43.CM3的堆栈方向为()生长。
答案:向下4.CM3中的数据总线和指令总线是()bit。
答案:325.流水线的三级流水不包括()。
答案:访存6.基于CM3内核的MCU大部分都使用的是大端模式。
()答案:错7.CM3有R0-R15寄存器组,其中R13为堆栈指针寄存器。
()答案:对8.CM3不支持32位的ARM指令集。
()答案:对9.STM32F107中,三条总线与其他外设相连,分别是____________、D-Code和系统总线。
答案:null10.APB2桥上挂接的设备是全速设备,最高可达____MHz。
答案:null第三章测试1.以下不是GPIO的配置模式的是()。
答案:模拟输出2.STM32F107共有()通用接口。
答案:53.复位期间和刚复位后,复用功能未开启,I/O端口被配置成()模式。
第5章 定时器TIM PPT
-8-
高级和通用定时器TIMx-- TIMx时 钟源
可以使用库函数来完成时钟源的选择,例如:
【示例5- 2】 选择时钟源 /* 选择TIM1为内部时钟源 */ void TIM_InternalClockConfig(TIM1);
原型如下:
【结构体5- 1】 TIM_TimeBaseInitTypeDef typedef struct {
/* 预分频系数,即PSC寄存器,计数范围0-0xffff */ uint16_t TIM_Prescaler; /* 计数模式选择 */ uint16_t TIM_CounterMode; /* 自动装载的计数值,即ARR寄存器,计数范围0-0xffff */ uint16_t TIM_Period; /* 时钟分割,用于数字滤波器等,计数模式中无作用 */ uint16_t TIM_ClockDivision; /* 重复次数,即RCR寄存器,取值范围0-0xff */ uint8_t TIM_RepetitionCounter; } TIM_TimeBaseInitTypeDef;
/* 计数器使能,开始工作 */ TIM_Cmd(TIM1, ENABLE); }
- 18 -
计数模式 --库函数TIM_TimeBaseInit( )
TIM_TimeBaseInitStructure为TIM_TimeBaseInitTypeDef
类型的指针(定义于文件“stm32f10x_tim.h”),其结构
计数器
计数器CNT是一个16位的寄存器,计数范围1-65535。可以向上计数、向下 计数或者向上向下双向计数。
STM32F107中国版用户手册
μC/Eval-STM32F107开发板中国版用户指南μC/Eval-STM32F107评估板(中国版)是一个完整的开发平台,采用了基于ARM Cortex-M3核的ST微处理器。
包含全速USB OTG,以太网MAC,两个CAN2.0A/B兼容接口,两个I2S接口,两个I2C接口,五个USART接口并支持智能卡,三个SPI接口,内部带有64KB SRAM和256KB flash,支持JTAG调试。
板上的硬件可以帮助你评估所有的外设(USB OTG,FS,以太网,CAN总线,SD/MMC卡,USART,温度传感器等)和开发自己的应用程序。
扩展排针和原型区可以帮助用户轻松的在板上添加自己的硬件接口,实现特定应用。
图1-1显示了μC/Eval-STM32F107的图片。
图1-1 μC/Eval-STM32F107 评估板1-1 特性μC/Eval-STM32F107提供以下特性:■72 MHz的STM32F107,基于Cortex-M3的微控制器:■256字节的闪存。
■64 KB的SRAM。
■10/100以太网接口。
■全速USB-OTG连接器。
■RS-232C接口。
■CAN接口连接排针。
■SD/MMC卡插槽。
■STLM75温度传感器。
■3个LED(红,黄,绿)。
■复位按钮。
■IO端口连接器(排针)。
■原型区。
■JTAG调试接口。
■USB接口供电。
■WiFi模块EMW3280接口。
■符合RoHS。
1-2 硬件的布局和配置μC/Eval-STM32F107评估板基于STM32F107VCT芯片的100引脚TQFP封装设计。
图1-2将帮助您在评估板找到对应的功能模块。
图1-2 μCEval-STM32F107开发板布局1-3 电源在μC-EVAL-STM32F107评估板由一个5V直流电源供电。
板子可以使用两种电源:■5V直流电源适配器连接到CN10,主板上的电源螺丝端子。
■500毫安的5V VBUS通过CN5,B型mini USB接口获取。
STM32F107网络互联开发板V3.0硬件使用手册
北京智嵌物联网电子技术有限公司技术支持QQ:498034132ISTM32F107网络互联开发板V3.0硬件使用手册版本号:A拟制人:赵工时间:2013年7月1日目录1本文档编写目的 (1)2硬件接口说明 (1)3核心硬件电路说明 (2)3.1电源电路 (2)3.2按键与LED电路 (3)3.3JTAG下载电路 (4)3.4外扩存储电路 (5)3.5RS232通讯电路 (5)3.6RS485通讯电路 (6)3.7CAN通讯电路 (6)3.8USB电路 (6)3.9DS18B20电路 (7)3.10以太网接口电路 (7)3.112.4G无线接口 (8)4使用注意事项 (9)1本文档编写目的本使用手册是针对STM32F107网络互联开发板V2.2的硬件而编写的,包括硬件接口说明、核心硬件电路说明、使用注意事项等内容。
2硬件接口说明该开发板的硬件结构如图1所示:图1硬件结构框图开发板实物接口如图2所示:图2开发板硬件接口(注意:DS18B20的安装方向!有什么疑问及时与我们技术联系。
)DS18B20安装方式3核心硬件电路说明3.1电源电路开发板供电方式有两种:5V电源适配器供电和USB供电。
(1)5V适配器供电直接将5V适配器插在J6上即可为板子供电,电路如图3所示:图35V适配器供电接口电路(2)USB供电将MINI USB插在J10上,并将J2用跳线短接。
电路参考图11。
(3)5V转3.3V电路不论板子采用哪种供电方式,最终会将该5V电源转为3.3V为系统供电。
5V转3.3V电路如图4所示:图45V转3.3V电路由上图可以看出,D6为5V电源指示灯,R11为限流电阻,为增加灯的亮度可以取2.2K。
5V电源经过10uf电容C138滤波后进入SPX1117-3.3,该芯片是稳压芯片,输出3.3V,再经过10UF电容C3滤波后供后级电路使用。
3.2按键与LED电路开发板扩展了4个按键和4个LED指示灯。
金龙107开发板用户手册(User Manual)
深圳市旺宝电子科技有限公司
11
论坛:
深圳市旺宝电子科技有限公司
论坛:
这里 download from file 选择要下载的文件,并且选择全片擦除,或擦除需要 的块,其他可默认,然后 next 下载 成功后
深圳市旺宝电子科技有限公司 14 论坛:
深圳市旺宝电子科技有限公司
论坛:
0x08003000,因为程序定义的地址是这个,更改地址时需要注意向量表等等的设 置,选择我们编译好的.hex 文件, 点击产生,将生产我们需要的 dfu 文件,可退出软了, .hex 文件生产可用以下方法
开发板没设置正确, 当出现以下界面,则完成
深圳市旺宝电子科技有限公司
10
论坛:
深圳市旺宝电子科技有限公司
论坛:
如果出不来,此时只能用串口 2 下载了,设置跳线 JP3 为 2-3,然后插上 usb 线到 USB-1,然后关闭软件,并重新打开,然后按复 位键(必须的)按软件的 next,将会出现上面的界面,然后点 next 下一步,一 直下一步到如下界面
深圳市旺宝电子科技有限公司
13
论坛:bbs.opΒιβλιοθήκη
深圳市旺宝电子科技有限公司
论坛:
设备管理器出现了 stm device in dfu mode,证明安装成功 (我们是默认进入 DFU 模式的,可查看)
深圳市旺宝电子科技有限公司
论坛:
旺宝-金龙 107 开发板 用户手册
深圳市旺宝电子科技有限公司
1
论坛:
深圳市旺宝电子科技有限公司
论坛:
1.2.开发板板载资源
STM32F107VCT6,ARM Cortex-M3 内核,主频 72MHz,内部含有 256K 字 节的 FLASH 和 64K 字节的 SRAM 1 个 10M/100M 以太网接口,标准 RJ45 接口,支持平行交叉网线自适应 1 个 USB 2.0 OTG 全速接口, 可以作为 USB SLAVE, 也可以作为 USB HOST 1 个标准的 3.2/4.3/5/7 寸 TFT LCD 接口,带触摸功能 1 个 I2S 音频解码芯片 WM8978,支持 MP3 软解,高品质音乐播放 1 个 FM 收音机芯片 TEA5767 2 个耳机接口 1 个 SD 卡接口 1 个 2.4G 无线通信模块接口 1 个红外接收头 1 个摄像头接口,选配 OV7670 模块 1 个温度传感器接口,选配 DS18B20 2 个 CAN 总线接口 1 个 RS485 接口 1 个 RS232 串口,DB9 母头 1 个 USB 转串口芯片 PL2303,笔记本使用更加方便 1 个 SPI FLASH 芯片,W25Q16,存储字库更加方便 1 个 IIC 接口的 EEPROM 芯片,24C02,容量 2K 1 个小喇叭 1 个复位按钮,控制整板硬件复位 4 个功能按钮,其中包括 WAKEUP 唤醒功能和 TEMPER 入侵功能 1 个五向按键 1 个电源指示灯,LD2,红色 4 个用户状态指示灯,LD1,LD3,LD4,LD5 红色 2 个启动模式选择配置端口 1 个 RTC 实时时钟后备电池座
stm32 定时器的相关寄存器
定时器在STM32F10xxx系列的32位MCU上,定时器资源十分丰富,包括高级控制定时器,通用定时器和基本定时器。
此外,还有能够实现定时功能的系统滴答定时器,实时时钟以及看门狗。
关于这些定时器的介绍,占据了STM32F10xxx 参考手册1/5的篇幅,可见其功能的强大。
在低容量和中容量的STM32F103xx产品,以及互联型产品STM32F105xx和STM32F107xx中,只有一个高级控制定时器TIM1。
而在高容量和超大容量的STM32F103xx产品中,有两个高级控制定时器TIM1和TIM8。
在所有STM32F10xxx系列产品中,都有通用定时器TIM2~TIM5,除非另有说明。
除此之外,在超大容量产品中,还有通用定时器TIM9~TIM14。
在高容量和超大容量的STM32F101xx和STM32F103xx产品,以及互联型产品STM32F105xx和STM32F107xx中,有两个基本定时器TIM6和TIM7。
其中,高级控制定时器的功能最为强大,可以实现所有其他定时器的所有功能。
TrailBreaker开发板使用的是高容量的STM32F103ZE,因此有两个高级控制定时器TIM1和TIM8。
下面我们就着重介绍这两个高级控制定时器。
TIM1和TIM8简介高级控制定时器(TIM1和TIM8)由一个16位的自动装载计数器组成,它由一个可编程的预分频器驱动。
它适合多种用途,包含测量输入信号的脉冲宽度(输入捕获),或者产生输出波形(输出比较、PWM、嵌入死区时间的互补PWM等)。
使用定时器预分频器和RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒到几个毫秒的调节。
关于实验中用到的LED部分原理图和GPIO跑马灯实验所用到的相同,在此不再多做介绍。
TIM1和TIM8定时器的功能包括:16位向上、向下、向上/下自动装载计数器16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535之间的任意数值多达4个独立通道:─ 输入捕获─ 输出比较─ PWM生成(边缘或中间对齐模式) ─ 单脉冲模式输出死区时间可编程的互补输出使用外部信号控制定时器和定时器互联的同步电路允许在指定数目的计数器周期之后更新定时器寄存器的重复计数器刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态如下事件发生时产生中断/DMA:─ 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)─ 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)─ 输入捕获─ 输出比较─ 刹车信号输入支持针对定位的增量(正交)编码器和霍尔传感器电路触发输入作为外部时钟或者按周期的电流管理高级定时器框图和时钟简介如框图中的红框所示,红框中的部分,也是时基单元(Time-base unit),对时基单元进行设置,就可以完成基础的定时器的使用设置。
stm32F107 USB从设备HID 鼠标程序详解
STM32F107USB从设备HID程序编写一、前提准备本文是基于STM32F107官方库文件3.5.0基础上完成的,首先要有以下资料准备:(1)stm32基于3.5.0库的工程模板;(2)stm32官方USB库文件(由于3.5.0官方库函数中不包括USB的官方库,因此需要单独加入),下载地址:/disk/home#path=%252F%25E5%25AD%25A6%25E4%25B9%25A0%25E 5%2585%25B1%25E4%25BA%25AB%252Fstm32%2520study%252Fusb%2520%25E5%2588 %2586%25E4%25BA%25AB(3)stm32USB基础知识(这里不再赘述,网上有蛮多资料,推荐《STM32USB固件的中文资料》和官方提供的本文讲述的USB库文件的官方说明);(4)编程软件keil for arm;(以上资料文件在链接中都有贡献!@^@多多支持)注意:下面的内容:有颜色标注的是用户需要修改的内容二、USB官方库详细介绍:在下载官方库之后,从命名上可以明白,该库为stm32105,107,f2和F4等USB控制器的主设备和从设备的官方库;接下来,我们继续进入库文件介绍:_hemresc:ST官方LOGOLibraries:CMSIS:ST官方内核说明及相应的源码(STM32F2xx_StdPeriph_Driver.....等等);STM_USB_Device_Library:USB器件类的库函数;STM_USB_HOST_Library:USB主设备类的库函数;STM32_USB_OTG_Driver:USB OTG类的驱动和库函数;Project:USB_Device_Examples:USB器件类的官方例程;USB_Host_Device_Examples:USB主从设备的官方例程;USB_Host_Examples:USB主设备官方例程;Utilities:该文件夹下包括STM32的扩展,比如SDIO、文件系统和官方评估板的简单驱动;至此大家应该明白官方USB库中,重点就在USB_device_Library、Host_Library和OTG_Library中了,由于本文主要讲解HID(人机接口设备)程序的实现,因此就不对HOST 做分析了;对于USB_Device_Library中的文件,官方分为了core和Class进行分装;对于core文件夹的源文件:Scr:包含了USB device内核,USB IO请求和USB数据请求的源代码;Inc:USB内核头文件,(usbd_conf_template.h为模板,用户需要自行添加使用到的USb功能定义,usbd_usr.h:用户需要添加用户自定义的函数声明和变量定义);再看Class文件下,包括USB device的所有设备的源文件和头文件;Audio:USB音频类设备,诸如喇叭、扩音器、低音炮之类;CDC:通信类设备,比如USB虚拟串口等;Dfu:固件升级;Hid:人机接口设备,比如鼠标、键盘、游戏手柄等;MSC:大容量存储设备,比如硬盘、读卡器等;接下来是OTG_library;该文件夹下包括了USB_core,USB_device、USB_Host、USB_OTG 的底层驱动:内核驱动:usb_core.cUSB_device驱动:usb_dcd.c usb_dcd_int.cUSB_Host驱动:usb_hcd.c usb_hcd_init.cUSB_OTG驱动:usb_otg,c头文件与之对应;看完这个大家就有疑问了,文件夹下还有其他的头文件和源文件,这些又是干嘛的呢?摆设?哈哈……这些文件就重要了,usb_defines.h、usb_regs,h廊括了USB的寄存器的相关定义,而usb_bsp.h、usb_conf_template.h、usb-dap_template.c则都是用户需要修改或增加USB相关代码的文件了;GG~~总算是把官方库给读完了(第一次写这种东西,真为自己捏把汗!哈哈……希望大家多多支持),从官方库中可以看出,官方代码需要修改的重要文件都用xxx_template.c和xxx_template.h命名,大大的方便了用户啊(真贴切);三、官方库的移植和修改了解了官方库的架构,对于本次USB HID设备的程序结构我们就相当清晰了:(1)底层驱动,(2)USB device内核;(3)USB HID设备源码;这三个部分的代码是我们需要添加的;打开我们的STM32工程模板文件夹,在文件夹下新建文件夹usb,在usb文件夹下新建usb_usr、usb_lib、usb_driver三个文件夹,文件夹内容添加如下:Usb_driver:官方库中OTG_library中内容,(可不用理睬HOST设备相关内容);Usb_lib:device_library中core文件夹所有内容和class下的HID内容;Usb_usr:将OTG_driver中的usb_bsp_template.c和usb__conf_template.h、上面所述的usbd_desc.c和usbd_usr.c,device Library/core/inc下的usbd_conf_template.h复制到usb_usr 文件夹中,并将xxxxx_template.重命名为xxxx.c(去掉_template);下面的都要在keil下进行了,过程如下:在工程下新建usb_driver、usb_lib_core、usb_lib_hid、usb_usr分组,并添加如图的源文件(切记要添加相应头文件路径target->c/c++->include path),添加结果如下:到了这一步,USB的工程模板就基本差不多了,但编译一下,还是会出现很多错误:(1)错误1:这个错误提示很明显,提示USB_OTG_HS_CORE和USB_OTG_FS_CORE至少要定义一种,这个错误提示的源码在usb_conf.h中,仔细查看该文件可知:官方将这两个定义都注释了,我们只要取消其中一个即可,这里我们采用USB全速模式,因此我们取消对USE_USB_OTG_FS的注释(HS是指USB高速模式,这种模式下需要外接PHY器件);(2)错误2:提示xxxx未定义,我们可以找到USBD_ITF_MAX_NUM出现在usbd_req.c中,其他均出现在usbd_hid_core.c中,这些都是我们需要单独实现的,这里我们同样在usb_conf.h中给出定义:这些定义我们会在后续的代码分析中进行一一讲解;注意:usb_bsp.c文件中,我们得注释掉函数的内容:void USB_OTG_BSP_Init(USB_OTG_CORE_HANDLE*pdev);void USB_OTG_BSP_EnableInterrupt(USB_OTG_CORE_HANDLE*pdev);至此我们再进行编译,就没有错误了,咱们USB的工程模板算是建立好了;四、HID程序代码编写工程模板是建立好了,开始对于程序该如何出手呢?从哪里开始编写呢?似乎还是一头雾水(痛哭流涕中)。