如何对STM32开发板进行编程


17

我是编程ARM微控制器的初学者,但是我确实对AVR和PIC微控制器有经验。

几天前,我从eBay购买了STM32F103VET6开发板。我现在正在尝试对该板进行编程,但是我不知道从哪里开始。我还收到了一张CD,其中包含一些数据表和一些文档(全部为中文)。

有人可以告诉我如何开始吗?还是有人有一些源样本?

我已经安装了Keil uVision4。我也有一个J-link调试器。


2
不知道为什么这被否决了。貌似一个明确的问题,表达清楚,OP试图帮助自己。与开发/设计有关,因此似乎很热门。投票了。
icarus74

这是在eBay上购买开发板的缺点之一,尤其是从远东运送的开发板。通常,它们是为本地市场设计的,并且要获得高质量的英语(对于他们来说是外语)手册,播种/开发/维护用户论坛,会带来太多的成本和麻烦。同样,这个市场已经被价格稍高的主板所服务。话虽这么说,过去我还是很难学的,并使用google翻译器将中文的大部分手册翻译成英文。远非完美,但让我感动。
icarus74

显然,您需要一份本手册的软拷贝,该文本应包含离散字符而不是照片图像。对于这种方法,OCR文本绝对是禁忌。
icarus74

哦,还有一件事。这些远东开发板中的大多数都是知名公司(例如Olimex,IAR等)开发板的100%仿制品。因此,对您的开发板以及其他开发板进行详细的目视检查可能会非常有启发性。当然,可能会有陷阱。那就是人们为省钱而付出的代价,有时:-)
icarus74

Answers:


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--);
}


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.