Questions tagged «stm32»

STM32是STMicroelectronics的第三个ARM系列。它遵循了较早的基于ARM9E内核的STR9系列和基于ARM7TDMI内核的STR7系列。STM32基于ARM Cortex-M系列内核。

2
STM32了解GPIO设置
在STM32标准外设库中,我们需要配置GPIO。 但是我不确定有3种功能如何配置它们; GPIO_InitStructure.GPIO_Speed GPIO_InitStructure.GPIO_OType GPIO_InitStructure.GPIO_PuPd 在GPIO_Speed中,有4种设置可供选择 GPIO_Speed_2MHz /*!< Low speed */ GPIO_Speed_25MHz /*!< Medium speed */ GPIO_Speed_50MHz /*!< Fast speed */ GPIO_Speed_100MHz 我怎么知道我要选择哪种速度?使用高速或低速是否有优点或缺点?(例如:功耗?) 在GPIO_OType中,有2种设置可供选择 GPIO_OType_PP // Push pull GPIO_OType_OD // Open drain 如何知道从中选择?什么是开漏和推拉? 在GPIO_PuPd中,有3种设置可供选择 GPIO_PuPd_NOPULL // No pull GPIO_PuPd_UP // Pull up GPIO_PuPd_DOWN // Pull down 我认为此设置与推拉的初始设置有关。

5
CMSIS,HAL和标准外设库
因此,我从PIC切换到ARM,并购买了STM32F4发现板。到目前为止,我了解要进行编程,您可以直接(以明显的方式)访问内存中的所有寄存器,还可以使用3个主要的库来简化生活。现在我的问题是,这3个中的哪一个(CMSIS,HAL,Std Peripherals Lib)是最低电平的?即。开销较小的那一种。我的目标是学习控制器的内部工作原理,而不是让我的生活变得更轻松(仅一点点),因此我想知道其中哪些更接近核心而不使用组装。
29 arm  stm32  stm32f4  cmsis 

8
为什么我们需要一个与我们的微控制器应用程序分开的引导程序?
为什么我们需要在微控制器的相同闪存程序存储器(特别是STM32F103,称为引导加载程序)中使用单独的程序? 将其与主应用程序分开有何特殊之处? 一般而言,基于微处理器的系统(例如PowerPC MPC8270)的引导程序是否与微控制器(例如ARM STM32F103)的引导程序完成相同的工作,或者它们在根本上是互不相同的工作,但两者都称为“引导程序” ?


6
串行协议定界/同步技术
由于异步串行通信甚至在当今的电子设备中也很普遍,我相信我们许多人会不时遇到这样的问题。考虑与串行线(RS-232或类似产品)连接并且需要连续交换信息的电子设备D和计算机。即每个发送一个命令帧,并每个发送一个状态报告/遥测帧答复(报告可以作为对请求的响应发送,也可以独立发送-在这里并不重要)。通信帧可以包含任何任意二进制数据。假设通信帧是固定长度的分组。PCPCX msDY ms 问题: 由于协议是连续的,因此接收方可能会失去同步,或者只是在进行中的发送帧中间“加入”,因此它只是不知道帧起始位置(SOF)在哪里。根据数据相对于SOF的位置,数据具有不同的含义,接收到的数据可能会永久损坏。 所需的解决方案 可靠的定界/同步方案可在恢复时间短的情况下检测SOF(即重新同步所需的时间不超过1帧)。 我了解(并使用了一些)的现有技术: 1)标头/校验和 -SOF作为预定义的字节值。帧末的校验和。 优点:简单。 缺点:不可靠。恢复时间未知。 2)字节填充: 优点:可靠,快速恢复,可与任何硬件一起使用 缺点:不适用于固定大小的基于帧的通信 3)第9位标记 -在每个字节之前附加一个位,而SOF标记为1和数据字节标记为0: 优点:可靠,快速恢复 缺点:需要硬件支持。大多数PC硬件和软件未直接支持。 4)第8位标记 -上面的一种模拟,同时使用第8位而不是第9位,每个数据字仅保留7位。 优点:可靠,快速的恢复,可与任何硬件一起使用。 缺点:需要从/到常规8位表示到/从7位表示的编码/解码方案。有点浪费。 5)基于超时 -假定SOF为某个已定义的空闲时间之后的第一个字节。 优点:无数据开销,简单。 缺点:不太可靠。在较差的计时系统(如Windows PC)上无法很好地工作。潜在的吞吐量开销。 问题: 还有哪些其他可能的技术/解决方案可以解决该问题?您能否指出上面列出的缺点,可以轻松解决这些缺点,从而消除它们?您(或您将)如何设计系统协议?
24 serial  communication  protocol  brushless-dc-motor  hall-effect  hdd  scr  flipflop  state-machines  pic  c  uart  gps  arduino  gsm  microcontroller  can  resonance  memory  microprocessor  verilog  modelsim  transistors  relay  voltage-regulator  switch-mode-power-supply  resistance  bluetooth  emc  fcc  microcontroller  atmel  flash  microcontroller  pic  c  stm32  interrupts  freertos  oscilloscope  arduino  esp8266  pcb-assembly  microcontroller  uart  level  arduino  transistors  amplifier  audio  transistors  diodes  spice  ltspice  schmitt-trigger  voltage  digital-logic  microprocessor  clock-speed  overclocking  filter  passive-networks  arduino  mosfet  control  12v  switching  temperature  light  luminous-flux  photometry  circuit-analysis  integrated-circuit  memory  pwm  simulation  behavioral-source  usb  serial  rs232  converter  diy  energia  diodes  7segmentdisplay  keypad  pcb-design  schematics  fuses  fuse-holders  radio  transmitter  power-supply  voltage  multimeter  tools  control  servo  avr  adc  uc3  identification  wire  port  not-gate  dc-motor  microcontroller  c  spi  voltage-regulator  microcontroller  sensor  c  i2c  conversion  microcontroller  low-battery  arduino  resistors  voltage-divider  lipo  pic  microchip  gpio  remappable-pins  peripheral-pin-select  soldering  flux  cleaning  sampling  filter  noise  computers  interference  power-supply  switch-mode-power-supply  efficiency  lm78xx 

3
STM32F4和HAL
因此,我一直在尝试使用STM32F407(我是ARM的新手),并决定使用HAL库编写一个简单的应用程序,因为ST似乎已经停止了标准外围设备库。所以我的问题是,HAL有什么意义?StdPeriph是否正在履行职责?他们为什么要为HAL停产呢?在我看来,HAL真是一团糟。 该文档是AWFUL的文档,至少对于StdPeriph而言,有一个完整的参考文献,其组织得很好,可以轻松找到所需的内容(http://stm32.kosyak.info/doc/)。对于HAL,有一个结构看似随机的不完整的PDF(http://www.st.com/st-web-ui/static/active/jp/resource/technical/document/user_manual/DM00105879.pdf)。阅读任何部分,例如有关外围设备的内容,我似乎都无法理解配置和正确定制它的要求。它看起来更像是不想忘记东西的人的个人笔记,而不是参考。 我知道我可以使用CubeMX初始化GPIO并配置外设,但是我的目标是自己做,所以我更好地了解它们的操作,而没有一款软件可以为我完成全部工作。难道我做错了什么?是我中的ARM新手使我感到困惑吗?还是现有文档不好?
23 arm  stm32  stm32f4 

10
STM单片机每次都会燃烧
我有一些使用stm32的经验,但是我只在开发板上使用过它们。 我最近尝试将stm32和stm8焊接在一个简单的分线板上,并用我的st-linkv2克隆对其进行编程。 首次通电时,单片机会发出一些小声音,例如几秒钟后燃烧,然后在2分钟后吸取100mA电流并冒烟。 我认为我缺少一些重要的细节。 像这样的简单设置会出什么问题?(仅vdd,vss,去耦电容和st-link) 我使用stm8和stm32尝试了20多次。 我尽可能地靠近去耦电容,并为其提供了3.3v电压。 几次,我可以对闪光灯进行编程和验证,但显示出一些奇怪的行为 *,几分钟后又冒了烟。 我尝试了拖焊,带有smd尖端的常规焊接以及低至260C的温度以及每个焊垫之后的冷却时间。我还尝试了在270C上使用热风枪,并且我已经确定该问题不在焊接中。 我还尝试了NRST上拉和BOOT0下拉。 *怪异的行为:“随机”,例如简单的led眨眼信号灯或pwm信号上的定时,仅下降到2.8v左右,而不是0v。总体而言,“ kinda”工作正常,但仅持续1分钟。 **问题不是st-link。它闪烁开发板就好了 编辑1: 这是原理图(对于stm32)(到带有标签的ST-Link的连接): 下面没有任何东西。只是连接到引脚的另一个(未填充)封装。 编辑2:连续性测试:无短路,所有引脚接触均正常 编辑3:连接VDDA和VDD,并在VDD上增加另一个4.7uF。还在炸 VDD直接在设备上测得:3.36v 编辑4:电流消耗行为:在所有情况下,油炸芯片时,它消耗大约20-40mA电流,有时突然上升到100-240mA持续几秒钟,然后归零(小于10mA)。并在重新启动之前保持零状态。 更新:我在VCAP上焊接了另一个STM8S003F3P6,1uF,在VDD上焊接了2x100nF和10uF。并使用电池作为电源,并制造了一个小的电容倍增器和发射极跟随器,以使3.3v带有许多陶瓷电容和低ESR电容,并且电流限制设置为15mA。该电压在50MHz以上的噪声小于30mV。然后我连接了MCU(刚焊接)。电流消耗小于4mA,电压稳定。我离开了。一两分钟后,它突然开始超过15mA极限并触发PDR。现在它立即开始执行此操作(即使已声明NRST)。似乎这个也消失了...


6
如何在STM32上使用printf函数?
我试图弄清楚如何使用printf函数打印到串行端口。 我当前的设置是STM32CubeMX生成的代码和带有STM32F407发现板的 SystemWorkbench32 。 我在stdio.h中看到printf原型定义为: int _EXFUN(printf, (const char *__restrict, ...) _ATTRIBUTE ((__format__ (__printf__, 1, 2)))); 这是什么意思?该函数定义的确切位置在哪里?找出如何使用这种功能输出的一般要点是什么?

4
恢复出厂设置如何工作?
所有嵌入式设备都包含“恢复出厂设置”选项,如果出现问题,用户可以使用该选项重置其设备。 我正在STM32板上开发固件。该固件包括一个引导加载程序,该加载程序允许通过UART升级应用程序(通过发送包含新映像的二进制文件),我想添加另一个功能:恢复出厂设置。当用户选择此选项时,电路板应加载原始图像。 什么是出厂重置?是将整个二进制文件再次加载到内存中,还是只是调用一个函数来重新初始化最终用户修改的变量? 最佳做法是什么? 原始FW存放在哪里?是内置闪光灯还是外接闪光灯?

2
为什么ST建议为72 MHz MCU使用100 nF去耦电容?(而不是10 nF。)
我一直在阅读有关去耦电容的信息,但我似乎无法理解为什么ST建议在72 MHz ARM微控制器上推荐100 nF的去耦电容。 通常,由于谐振,100 nF的去耦电容仅在大约20-40 MHz时才有效。我认为10 nF去耦电容比较合适,因为它们的谐振接近100 MHz。 (显然,这取决于封装及其电感,但从我所看到的来看,这些只是标准值。) 根据STM32F103数据表,ST建议在VDD上使用100 nF电容,在VDDA 上建议使用10 nF电容。这是为什么?我想我也应该在V DD上使用10 nF 。

1
Stm32事件和中断
我开始研究stm32上的中断,特别是stm32f4发现板。我发现了这个示例,在该示例中,您必须按下按钮才能启动中断,然后再次按下以使其停止。 在这一行:EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt我们必须选择中断模式或事件模式。我将其更改为事件模式,但似乎不起作用。因此我得出的结论是,处理程序仅在中断执行的情况下执行。 如果您无法在事件发生时执行一些代码,为什么还要在stm32上使用事件? 这是代码: #include "stm32f4xx.h" #include "stm32f4xx_syscfg.h" #include "stm32f4xx_rcc.h" #include "stm32f4xx_gpio.h" #include "stm32f4xx_exti.h" #include "misc.h" EXTI_InitTypeDef EXTI_InitStructure; void EXTILine0_Config(void); void LEDInit(void); void ExtInt(void) { LEDInit(); /* Configure EXTI Line0 (connected to PA0 pin) in interrupt mode */ EXTILine0_Config(); /* Generate software interrupt: simulate a rising edge applied …

3
如何对STM32开发板进行编程
我是编程ARM微控制器的初学者,但是我确实对AVR和PIC微控制器有经验。 几天前,我从eBay购买了STM32F103VET6开发板。我现在正在尝试对该板进行编程,但是我不知道从哪里开始。我还收到了一张CD,其中包含一些数据表和一些文档(全部为中文)。 有人可以告诉我如何开始吗?还是有人有一些源样本? 我已经安装了Keil uVision4。我也有一个J-link调试器。
17 arm  stm32 

1
STM32事件EVENTOUT是什么?
在我的STM32 手册中,GPIO备用功能之一(即AF15,请参见第138页)称为EVENTOUT。绝对不会定义事件或给出用例。 STM32的EVENTOUT替代功能是什么?
17 stm32 

2
如何使用外部ST-Link调试/编程STM32F103 MCU?
我正在为自己的项目使用STM32F103 MCU,并希望将STM32F411 Nucleo板的ST-Link用于外部调试/编程。 我将CN2跳线设置为OFF,我的实际问题是在SWO(CN2)的引脚中。我如何进行以下操作: (SWO的)PIN 1是VDD_Target PIN 2是SWCLK PIN 3是GND PIN 4是SWDIO PIN 5是NRST PIN 6是2 就我所知,我不应该使用上面所有这些引脚。就像在,我已经连接 MCU中的PIN 2至PIN 37(或PA14) PIN 3至GND PIN 4至PIN 34(或PA13) 目标MCU中的PIN 5至PIN 7或(RESET)。 不知道我是否应该连接SWO引脚,因为它被设置为“保留”(为什么?)。另外,我给MCU的VIN引脚提供了3.3 V电压,这意味着我不需要连接VDD(stlink的PIN 1)。 请参考我从官方数据表中获取的这张表: 这是MCU的常规引脚配置: 我已经用示波器和测试仪“几乎”测试了所有东西,一切似乎都还好。我在这里还想念什么?我应该对BOOT0或BOOT1引脚做任何事情吗?
16 stm32  stm32f10x  swd  st-link 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.