วิธีการเขียนโปรแกรมบอร์ดพัฒนา STM32


17

ฉันเป็นผู้เริ่มต้นด้วยการเขียนโปรแกรมไมโครคอนโทรลเลอร์ ARM แต่ฉันมีประสบการณ์เกี่ยวกับไมโครคอนโทรลเลอร์ AVR และ PIC

ไม่กี่วันก่อนฉันได้ซื้อบอร์ดพัฒนา STM32F103VET6 จาก eBay ตอนนี้ฉันกำลังพยายามเขียนโปรแกรมกระดานนี้ แต่ฉันไม่รู้ว่าจะเริ่มจากตรงไหน ฉันยังได้รับซีดีซึ่งมีเอกสารข้อมูลบางอย่างและเอกสารบางอย่าง (ทั้งหมดเป็นภาษาจีน)

มีคนบอกฉันว่าจะเริ่มอย่างไร หรือใครบางคนมีตัวอย่างแหล่งที่มา?

ฉันได้ติดตั้ง Keil uVision4 แล้ว ฉันยังมีดีบักเกอร์ J-link ด้วย


2
ไม่แน่ใจว่าทำไมสิ่งนี้จึงถูกโหวต ดูเหมือนคำถามที่ชัดเจนพูดชัดแจ้งอย่างถูกต้องและ OP ได้พยายามช่วยตัวเอง เกี่ยวข้องกับการพัฒนา / ออกแบบดังนั้นจึงดูเหมือนในหัวข้อ โหวตขึ้น
icarus74

นี่คือหนึ่งในข้อเสียของการซื้อบอร์ด dev บนอีเบย์โดยเฉพาะคนที่ส่งจากตะวันออกไกล บ่อยครั้งที่มันถูกออกแบบมาเพื่อตลาดในประเทศและการสร้างคู่มือภาษาอังกฤษ (ภาษาต่างประเทศสำหรับพวกเขา) ที่มีคุณภาพสูงด้วยตนเองการสร้าง / การพัฒนา / การบำรุงรักษาฟอรัมผู้ใช้นั้นมีต้นทุนและความยุ่งยากมากเกินไป นอกจากนี้ยังเป็นตลาดที่ให้บริการโดยบอร์ดราคาแพงกว่าเล็กน้อย ต้องบอกว่าในอดีตที่ผ่านมาฉันได้เรียนรู้วิธีการที่ยากลำบากและทำให้การแปลคู่มือส่วนใหญ่เป็นภาษาจีนเป็นภาษาอังกฤษโดยใช้ Google แปล ห่างไกลจากความสมบูรณ์ แต่ทำให้ฉันเคลื่อนไหว
icarus74

เห็นได้ชัดว่าคุณต้องการสำเนาแบบย่อของคู่มือซึ่งมีข้อความเป็นอักขระที่ไม่ต่อเนื่องไม่ใช่รูปถ่าย ข้อความ OCR จะไม่เข้มงวดสำหรับวิธีการนี้
icarus74

โอ้และอีกอย่างหนึ่ง กระดาน dev ส่วนใหญ่ทางตะวันออกเฉียงเหนือเหล่านี้เป็นกระดานเคาะที่ทำขึ้นมา 100% โดย บริษัท ที่มีชื่อเสียงอย่าง Olimex, IAR และอื่น ๆ ดังนั้นการตรวจสอบภาพอย่างละเอียดของบอร์ดของคุณและคณะอื่น ๆ แน่นอนอาจมี gotchas และนั่นคือราคาที่จ่ายเพื่อการประหยัดเงินในบางครั้ง :-)
icarus74

คำตอบ:


5

ฉันมีตัวอย่างกระพริบตาหากคุณต้องการดู

#include "stm32f10x_conf.h"

/* led connected to a gpio pin */
#define LED1_PIN    GPIO_Pin_0
#define LED1_PORT   GPIOB
#define LED2_PIN    GPIO_Pin_3
#define LED2_PORT   GPIOC
#define LED3_PIN    GPIO_Pin_0
#define LED3_PORT   GPIOA
#define LED4_PIN    GPIO_Pin_0
#define LED4_PORT   GPIOE


/* user functions */
void delay(unsigned long count);

int main()
{
    GPIO_InitTypeDef GPIO_InitStructure;



    /* enable clock on GPIOB peripheral */
    //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOA, ENABLE);                          


    /* set pin output mode */
    GPIO_InitStructure.GPIO_Pin = LED1_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(LED1_PORT, &GPIO_InitStructure);
    //LED 2
    GPIO_InitStructure.GPIO_Pin = LED2_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(LED2_PORT, &GPIO_InitStructure);
    //LED 3
    GPIO_InitStructure.GPIO_Pin = LED3_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(LED3_PORT, &GPIO_InitStructure);
    //LED 4
    GPIO_InitStructure.GPIO_Pin = LED4_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(LED4_PORT, &GPIO_InitStructure);
    while(1)
    {
        GPIO_SetBits(LED1_PORT, LED1_PIN);  // set pin high
        delay(2000000);
        GPIO_ResetBits(LED1_PORT, LED1_PIN);    // set pin low
        delay(2000000);

        GPIO_SetBits(LED2_PORT, LED2_PIN);  // set pin high
        delay(2000000);
        GPIO_ResetBits(LED2_PORT, LED2_PIN);    // set pin low
        delay(2000000);

        GPIO_SetBits(LED3_PORT, LED3_PIN);  // set pin high
        delay(2000000);
        GPIO_ResetBits(LED3_PORT, LED3_PIN);    // set pin low
        delay(2000000);

        GPIO_SetBits(LED4_PORT, LED4_PIN);  // set pin high
        delay(2000000);
        GPIO_ResetBits(LED4_PORT, LED4_PIN);    // set pin low
        delay(2000000);
    }
    //return 0;
}



void delay(unsigned long count)
{
    while(count--);
}

3

ดูที่บอร์ด STM32 Discovery ที่ราคาไม่แพงมาก คว้าสำเนาของโครงการ texane / stlink บน Github ซึ่งมีบทช่วยสอนที่มีประโยชน์มากพร้อมด้วยเครื่องมือซอฟต์แวร์ที่ดีสำหรับการเริ่มต้น

คุณสามารถรับกระดานได้หลายที่

http://www.digikey.com/us/en/ph/ST/STM32_value_line_discovery.html

http://www.mouser.com/stm32discovery

http://www.newark.com/jsp/search/productdetail.jsp?SKU=21T4023

นี่คือโครงการ stlink บน Github

https://github.com/texane/stlink


2

คุณจะพบข้อมูลมากมายเกี่ยวกับการเขียนโปรแกรม STM32F103 ได้ที่นี่:

http://www.st.com/internet/mcu/product/164486.jsp

พร้อมตัวอย่างมากมาย

คุณจะพบสิ่งต่าง ๆ ได้ง่ายขึ้นด้วยหนึ่งในบอร์ด ST เช่นนี้:

http://www.st.com/internet/evalboard/product/250863.jsp

พวกเขามีราคาไม่แพงมากและมีเอกสารและตัวอย่างมากมาย

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