1. 安装环境
Ubuntu 12.04 32bit版本(64bit不行),中英文都可以。虚拟机下也安装成功过。
------------------------------------------------------------------------------------------------------------------------------------------------------
2. 工具链安装步骤
2.1 先安装git
代码: 全选
sudo apt-get install git
代码: 全选
git clone git://github.com/esden/summon-arm-toolchain
代码: 全选
sudo apt-get install zlib1g-dev libtool flex bison libgmp3-dev libmpfr-dev libncurses5-dev libmpc-dev autoconf texinfo
build-essential libftdi-dev
2.4 进入summon-arm-toolchain目录,建立一个sources文件夹。
代码: 全选
mkdir sources
直接执行./summon-arm-toolchain,也是从网络上下载binutils这些源码包,其中gcc-linaro-4.6-2011.10.tar.bz2这个包下载非常缓慢。当然,如果您的网络不错,可以不用从我的网盘拷贝
2.5 再执行./summon-arm-toolchain,安装开始。默认的安装目录是~/sat。
可以在命令后跟参数设定安装目录和其它功能 (详见README)。我的设置是:
代码: 全选
./summon-arm-toolchain PREFIX=~/stm32_toolchain OOCD_EN=0
2.6 等待等待......大概30分钟(i3,4G内存,您估摸着做点其它事吧)。开启另外一个终端,设置一下PATH。主目录下,编辑.bashrc(隐藏文件),文件末尾加上export PATH=$PATH:~/stm32_toolchain/bin(这个是我的设置)
2.7 安装结束后,运行arm-none-eabi-gcc --version,看到如下提示表示安装
成功。
代码: 全选
arm-none-eabi-gcc --version
代码: 全选
arm-none-eabi-gcc (Linaro GCC 4.6-2011.10) 4.6.2 20111004 (prerelease)
Copyright (C) 2011 Free Software Foundation , Inc
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE
3. STLINK安装步骤(这个容易点,只针对V2)
3.1 安装依赖包
代码: 全选
sudo apt-get install libusb-1.0 pkg-config
3.2 下载stlink
代码: 全选
git clone https://github.com/texane/stlink
代码: 全选
sudo ./autogen.sh
代码: 全选
sudo ./configure
代码: 全选
sudo make
3.7 插上STLINK,执行命令:
代码: 全选
sudo chmod -R a_rwx /dev/bus/usb
------------------------------------------------------------------------------------------------------------------------------------------------------
4. 开始第一个设计(基于stm32f4xx-discovery板)
4.1 下载模板
代码: 全选
git clone git://github.com/jeremyherbert/stm32-templates.git
代码: 全选
cp -r stm32-templates/stm32f4-discovery ~/blinky
代码: 全选
rm inc/stm32f4xx_it.h src/stm32f4xx_it.c src/main.c
代码: 全选
touch src/main.c
4.5 将如下代码写入main.c文件
代码: 全选
#include "stm32f4xx_conf.h"
//定时器2中断函数
void TIM2_IRQHandler(void)
{
if(TIM2->SR & TIM_SR_UIF)
GPIOD->ODR ^=(1 << 13);
TIM2->SR = 0x0;
}
int main(void)
{
//使能GPIOD时钟
RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN;
//使能定时器2时钟
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;
//设置PD13为通用IO输出
GPIOD->MODER = (1 << 26);
//使能定时器2中断
NVIC->ISER[0] |= 1 << (TIM2_IRQn);
//关闭预分频器,定时器向上计数,和外设时钟同步
TIM2->PSC = 0x0;
//使能更新事件
TIM2->DIER |= TIM_DIER_UIE;
//计数到1自动重装
TIM2->ARR = 0x01;
//自动重装开启,计数使能
TIM2->CR1 |= TIM_CR1_ARPE | TIM_CR1_CEN;
//触发更新事件,重装计数器寄存器
TIM2->EGR = 1;
while(1);
}
4.7 执行命令,将二进制代码烧写开发板上去。
代码: 全选
st-flash write main.bin 0x8000000
代码: 全选
sudo chmod -R a+rwx /dev/bus/usb
------------------------------------------------------------------------------------------------------------------------------------------------------
5. 相关链接(咱也只是一个搬运工而已)
summon-arm-toolchain
https://github.com/esden/summon-arm-toolchain
stlink
https://github.com/texane/stlink