คำถามติดแท็ก stm32

STM32 เป็นตระกูล ARM ที่สามโดย STMicroelectronics มันตามมาจากตระกูล STR9 ก่อนหน้านี้โดยใช้หลัก ARM9E และตระกูล STR7 ตามหลัก ARM7TDMI 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 …

5
CMSIS เทียบกับ HAL เทียบกับมาตรฐานห้องสมุดอุปกรณ์ต่อพ่วง
ดังนั้นฉันจึงเปลี่ยนจาก PICs เป็น ARM และฉันซื้อบอร์ดค้นพบ STM32F4 จนถึงตอนนี้ฉันเข้าใจว่าในการเขียนโปรแกรมคุณสามารถเข้าถึงการลงทะเบียนทั้งหมดในหน่วยความจำโดยตรง (วิธีที่ชัดเจน) และยังมีห้องสมุดหลัก 3 แห่งที่คุณสามารถใช้เพื่อทำให้ชีวิตของคุณง่ายขึ้น ตอนนี้คำถามของฉันคือหนึ่งในสามของเหล่านั้น (CMSIS, HAL, Std อุปกรณ์ต่อพ่วง Lib) เป็นระดับต่ำที่สุด? กล่าวคือ หนึ่งที่มีค่าใช้จ่ายน้อย เป้าหมายของฉันคือการเรียนรู้การทำงานภายในของผู้ควบคุมและไม่ทำให้ชีวิตของฉันง่ายขึ้น (เพียงเล็กน้อย) ดังนั้นฉันอยากจะรู้ว่าสิ่งใดที่อยู่ใกล้กับแกนกลางโดยไม่ต้องใช้ชุดประกอบ
29 arm  stm32  stm32f4  cmsis 

8
เหตุใดเราจึงต้องใช้ bootloader แยกจากแอปพลิเคชันโปรแกรมของเราในไมโครคอนโทรลเลอร์
เหตุใดเราจึงต้องการโปรแกรมแยกต่างหากในหน่วยความจำแฟลชโปรแกรมเดียวกันของไมโครคอนโทรลเลอร์โดยเฉพาะอย่างยิ่ง STM32F103 ซึ่งเรียกว่า bootloader มีอะไรพิเศษเกี่ยวกับมันเพื่อแยกมันออกจากโปรแกรมแอปพลิเคชันหลัก? โดยทั่วไปแล้ว bootloader ของระบบที่ใช้ไมโครโปรเซสเซอร์ (พูดว่า PowerPC MPC8270) ทำหน้าที่เหมือนกับของไมโครคอนโทรลเลอร์ (พูดกับ ARM STM32F103) หรือพวกเขากำลังทำงานที่แตกต่างกันโดยพื้นฐานและทั้งคู่ก็เรียกว่า 'bootloader' ?

8
ฉันจะพัฒนาสำหรับการค้นพบ STM32 บน Linux ได้อย่างไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดเมื่อปีที่แล้ว ฉันมีบอร์ดค้นพบ STM32 และต้องการให้สามารถเขียนโปรแกรมลงบน Linux วิธีที่ง่ายที่สุดในการทำเช่นนี้คืออะไร?

6
โปรโตคอลการ จำกัด / การซิงโครไนซ์เทคนิคแบบอนุกรม
เนื่องจากการสื่อสารแบบซีเรียลแบบอะซิงโครนัสแพร่กระจายอย่างกว้างขวางในอุปกรณ์อิเล็กทรอนิกส์ทุกวันนี้ฉันเชื่อว่าพวกเราหลายคนได้พบคำถามเช่นนี้เป็นครั้งคราว พิจารณาอุปกรณ์อิเล็กทรอนิกส์Dและคอมพิวเตอร์PCที่เชื่อมต่อกับสายอนุกรม (RS-232 หรือคล้ายกัน) และจำเป็นต้องมีการแลกเปลี่ยนข้อมูลอย่างต่อเนื่อง Ie PCกำลังส่งเฟรมคำสั่งแต่ละเฟรมX msและDกำลังตอบกลับด้วยรายงานสถานะ / เฟรม telemetry แต่ละรายการY ms(สามารถส่งรายงานเป็นการตอบสนองต่อคำขอหรือเป็นอิสระ - ไม่สำคัญเลยที่นี่) กรอบการสื่อสารสามารถมีข้อมูลไบนารีใด ๆ โดยพลการ สมมติว่าเฟรมการสื่อสารเป็นแพ็กเก็ตที่มีความยาวคงที่ ปัญหา: เนื่องจากโปรโตคอลมีความต่อเนื่องด้านการรับอาจหลุดการซิงโครไนซ์หรือเพียงแค่ "เข้าร่วม" ที่อยู่ตรงกลางของเฟรมที่ส่งต่อเนื่องดังนั้นมันจะไม่รู้ว่าจุดเริ่มต้นของเฟรม (SOF) นั้นอยู่ที่ไหน ข้อมูลมีความหมายที่แตกต่างกันไปตามตำแหน่งของ SOF ข้อมูลที่ได้รับจะเสียหายและอาจเกิดขึ้นตลอดไป ทางออกที่ต้องการ รูปแบบการลด / ประสานที่เชื่อถือได้ในการตรวจจับ SOF ด้วยเวลาการกู้คืนสั้น ๆ (เช่นไม่ควรใช้เวลามากกว่านั้นพูด 1 เฟรมเพื่อซิงโครไนซ์อีกครั้ง) เทคนิคที่มีอยู่ฉันรู้ (และใช้บางส่วน) ของ: 1) ส่วนหัว / การตรวจสอบ - SOF เป็นค่าไบต์ที่กำหนดไว้ล่วงหน้า ตรวจสอบผลรวมในตอนท้ายของเฟรม จุดเด่น:เรียบง่าย …
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 แต่ฉันเคยใช้พวกเขาบนกระดาน dev เท่านั้น ฉันเพิ่งพยายามบัดกรี stm32 และ stm8 บนกระดานแยกง่ายและโปรแกรมพวกเขาด้วย st-linkv2 โคลนของฉัน เมื่อเปิดเครื่องครั้งแรก mcu จะทำเสียงเล็กน้อยเหมือนการเผาหลังจากไม่กี่วินาทีและ 2 นาทีต่อมาก็วาด 100mA และสูบบุหรี่ ฉันคิดว่ามีรายละเอียดที่สำคัญบางอย่างที่ฉันหายไป มีอะไรผิดปกติในการตั้งค่าอย่างง่ายเช่นนี้? (เฉพาะ vdd, vss, decoupling cap และ st-link) ฉันลองมากกว่า 20 ครั้งด้วย stm8 และ stm32 ฉันได้ฝาปิดดีวีดีที่สุดเท่าที่จะเป็นไปได้และให้มาพร้อมกับ 3.3v สองสามครั้งที่ฉันสามารถตั้งโปรแกรมและตรวจสอบแฟลชได้ แต่มันแสดงพฤติกรรมแปลก ๆ * และอีกครั้งก็ขึ้นไปสูบบุหรี่ในไม่กี่นาทีต่อมา ฉันพยายามลากการบัดกรีการบัดกรีปกติด้วยปลาย smd และอุณหภูมิต่ำสุดที่ 260C และเวลาคูลดาวน์หลังจากแต่ละแผ่น ฉันลองปืนลมร้อนที่ 270C และฉันก็ใกล้จะแน่ใจว่าปัญหานั้นไม่ได้เกิดจากการบัดกรี ฉันลองด้วยการดึง …

2
อะไรคือความแตกต่างระหว่างช่องสัญญาณ STM32 ADC แบบฉีดและแบบธรรมดา?
คู่มืออ้างอิงของ STM32F1 อธิบายถึงช่องทาง "ปกติ" และ "ฉีด" ของ ADC แต่ไม่ชัดเจนกับความแตกต่าง ความแตกต่างระหว่างสองประเภทคืออะไรและเมื่อใดที่คุณจะใช้อย่างใดอย่างหนึ่ง
19 adc  stm32 

6
ฉันจะใช้ฟังก์ชัน printf บน STM32 ได้อย่างไร
ฉันพยายามหาวิธีใช้ฟังก์ชั่น printf เพื่อพิมพ์ไปยังพอร์ตอนุกรม การตั้งค่าปัจจุบันของฉันคือรหัสที่สร้างขึ้นจากSTM32CubeMXและ SystemWorkbench32 พร้อมกับบอร์ดการค้นพบ STM32F407คณะกรรมการ ฉันเห็นใน stdio.h ว่าต้นแบบ printf ถูกกำหนดเป็น: int _EXFUN(printf, (const char *__restrict, ...) _ATTRIBUTE ((__format__ (__printf__, 1, 2)))); มันหมายความว่าอะไร? ตำแหน่งที่แน่นอนของนิยามฟังก์ชันนี้อยู่ที่ไหน อะไรคือจุดทั่วไปในการค้นหาวิธีการใช้ฟังก์ชั่นประเภทนี้ในการส่งออก

4
การรีเซ็ตเป็นค่าเริ่มต้นจากโรงงานทำงานอย่างไร
อุปกรณ์ฝังตัวทั้งหมดมีตัวเลือก "รีเซ็ตเป็นค่าเริ่มต้นจากโรงงาน" ซึ่งอนุญาตให้ผู้ใช้รีเซ็ตอุปกรณ์ของเขาหากมีสิ่งผิดปกติ ฉันกำลังพัฒนาเฟิร์มแวร์บนบอร์ด STM32 เฟิร์มแวร์มีบูตโหลดเดอร์ที่อนุญาตให้อัปเกรดแอปพลิเคชันผ่าน UART (โดยการส่งไฟล์ไบนารีที่มีภาพใหม่) และฉันต้องการเพิ่มคุณสมบัติอื่น: รีเซ็ตเป็นค่าจากโรงงาน เมื่อผู้ใช้เลือกตัวเลือกนี้บอร์ดจะโหลดภาพต้นฉบับ การรีเซ็ตเป็นค่าเริ่มต้นจากโรงงานคืออะไร มันเกี่ยวกับการโหลดไฟล์ไบนารี่ทั้งหมดลงในหน่วยความจำอีกครั้งหรือเพียงแค่เรียกใช้ฟังก์ชันที่เริ่มต้นตัวแปรที่แก้ไขโดยผู้ใช้ปลายทางหรือไม่ วิธีปฏิบัติที่ดีที่สุดในการทำเช่นนั้นคืออะไร? จะเก็บ FW ดั้งเดิมไว้ที่ไหน มันอยู่ในแฟลชภายในหรือภายนอก?

2
เหตุใด ST แนะนำให้ใช้ 100 nF decoupling capacitor สำหรับ 72 MHz MCU (และไม่ใช่ 10 nF.)
ฉันอ่านเกี่ยวกับตัวเก็บประจุแยกตัวและฉันไม่สามารถเข้าใจได้ว่าทำไม ST จึงแนะนำตัวเก็บประจุแยกส่วน 100 nF ในไมโครคอนโทรลเลอร์ ARM 72 MHz โดยทั่วไปแล้วตัวเก็บประจุแยกความถี่ 100 nF จะมีประสิทธิภาพสูงถึงประมาณ 20-40 MHz เนื่องจากการสั่นพ้อง ฉันคิดว่าแคป decoupling 10 nF มีความเหมาะสมมากกว่าเนื่องจากเสียงเรโซแนนซ์ใกล้กับ 100 MHz (เห็นได้ชัดว่ามันขึ้นอยู่กับแพ็คเกจและการเหนี่ยวนำ แต่สิ่งเหล่านี้เป็นเพียงค่า ballpark จากสิ่งที่ฉันเห็น) จากแผ่นข้อมูล STM32F103 นั้น ST แนะนำตัวเก็บประจุ 100 nF สำหรับ V DDและ 10 nF สำหรับ VDDA ทำไมถึงเป็นอย่างนั้น? ฉันคิดว่าฉันควรใช้ 10 nF บน V DDด้วย

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 */ …

3
วิธีการเขียนโปรแกรมบอร์ดพัฒนา STM32
ฉันเป็นผู้เริ่มต้นด้วยการเขียนโปรแกรมไมโครคอนโทรลเลอร์ ARM แต่ฉันมีประสบการณ์เกี่ยวกับไมโครคอนโทรลเลอร์ AVR และ PIC ไม่กี่วันก่อนฉันได้ซื้อบอร์ดพัฒนา STM32F103VET6 จาก eBay ตอนนี้ฉันกำลังพยายามเขียนโปรแกรมกระดานนี้ แต่ฉันไม่รู้ว่าจะเริ่มจากตรงไหน ฉันยังได้รับซีดีซึ่งมีเอกสารข้อมูลบางอย่างและเอกสารบางอย่าง (ทั้งหมดเป็นภาษาจีน) มีคนบอกฉันว่าจะเริ่มอย่างไร หรือใครบางคนมีตัวอย่างแหล่งที่มา? ฉันได้ติดตั้ง Keil uVision4 แล้ว ฉันยังมีดีบักเกอร์ J-link ด้วย
17 arm  stm32 

1
เหตุการณ์ STM32 คืออะไร EVENTOUT?
ในคู่มือของ STM32 ของฉันหนึ่งในฟังก์ชัน GPIO Alternate (เช่น AF15 ดูหน้า 138) ถูกเรียกว่า EVENTOUT ไม่มีเหตุการณ์ที่กำหนดไว้หรือกรณีการใช้ที่กำหนด ฟังก์ชันทางเลือก EVENTOUT ของ STM32 ของฉันคืออะไร
17 stm32 

2
วิธีการใช้ ST-Link ภายนอกเพื่อดีบัก / โปรแกรม STM32F103 MCU
ฉันกำลังใช้ STM32F103 MCU สำหรับโครงการของฉันและต้องการใช้ ST-Link ของบอร์ด STM32F411 Nucleo เพื่อการดีบัก / เขียนโปรแกรมภายนอก ฉันได้ปิดตัวจัมเปอร์ CN2 และคำถามที่แท้จริงของฉันอยู่ใน pinout ของ SWO (CN2) ฉันจะทำสิ่งต่อไปนี้อย่างไร: PIN 1 (จาก SWO) คือ VDD_Target PIN 2 คือ SWCLK PIN 3 คือ GND PIN 4 คือ SWDIO PIN 5 คือ NRST PIN 6 คือ SWO เพื่อความรู้ที่ดีที่สุดของฉันฉันไม่ควรใช้หมุดเหล่านี้ทั้งหมดข้างต้น ในขณะที่ฉันได้เชื่อมต่อ PIN 2 ถึง …
16 stm32  stm32f10x  swd  st-link 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.