想学STM32,不知道从哪开始的有木有? 想学ARM单片机,嫌买开发板、调试器费钱的有木有? 买了STM32开发板没有资料不会玩,放在那里吃灰的有木有? 买了开发板,照着例子跑通了几个程序,依然一头雾水的有木有?
我cruelfox是个非常抠门的人,搞DIY也省得很——一切从简。(太复杂了的搞不定
OK,来写第一个测试程序:定时控制LED闪烁。
#include "stm32f0xx.h"
int main(void)
{
RCC->AHBENR |= RCC_AHBENR_GPIOAEN; // enable GPIO port A & B clock
GPIOA->MODER = GPIO_MODER_MODER8_0; // PA8 as general output (LED)
RCC->APB1ENR |= RCC_APB1ENR_TIM6EN; // enable basic timer 6
TIM6->PSC = 9999; // prescaler
TIM6->ARR = 399; // auto reload value
TIM6->CR1 = TIM_CR1_URS|TIM_CR1_CEN; // start counter
while(1)
{
static char a=0;
if(TIM6->SR & TIM_SR_UIF) // check if overflow
{
TIM6->SR &= ~TIM_SR_UIF; // clear flag
if(a==0)
{
GPIOA->BSRR = (1<<8);
a=1;
}
else
{
GPIOA->BRR = (1<<8);
a=0;
}
}
}
}
复制代码
上面这个程序所做的事情,先是初始化GPIO, 设置PA8为输出口(板子上连了一个LED),然后是设置定时器Timer 6, 这是一个自动重装的计数器,我把它调到0.5秒中溢出一次。在下面的循环里面,就是检测溢出标志,然后切换LED的亮和灭状态。学过C语言的,都应该看得懂;至于RCC, GPIOA, TIM6 这几个结构指针的定义,都在#include的头文件里面,这是和硬件相关的,具体请查阅"RM0091 STM32F0x1/STM32F0x2/STM32F0x8 Reference Manual"编程手册。
如何编译上面这个 C 程序,且听下回分解。这里暂且假定编译成功了,得到一个 HEX 文件,也就是要烧写的二进制代码。
如果你是使用KEIL, IAR等集成开发环境,那么用自带的烧写工具就可以进行写入了。如果是像我cruelfox这样追求精简,仅使用GCC命令行工具的,就需要再找下载程序用的软件了。
如果是使用ST-Link,可以使用ST自己的STVP (Visual Programmer),这个东东在ST网站上可以下载到,不过是包含在九十兆左右的一个大包"ST Toolset"里面。(下载URL http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1533/PF210568 )这个软件的界面是这个样子的:
主菜单上面 Erase, Program, Verify, Read 功能很明了了,File-->Open可以加载HEX文件。第一次运行STVP的时候,要选择ST-LINK调试器,和 SWD接口。
如果没有ST-Link, 使用串口下载的话,需要"Flash Loader Demostrator"软件,这个也可以从ST网站直接下载(URL http://www.st.com/st-web-ui/static/active/en/st_prod_software_internet/resource/technical/software/demo_and_example/stsw-mcu005.zip)。下载前要把BOOT0跳线接上,使STM32进入Bootloader模式,USART1连接到PC的串口(我用的是FT232RL USB转串口),把MCU加电。运行软件,界面是这样的:
选择串口,然后点"Next",如果成功连上了,则界面变成下面这样
点"Next"继续
这时已显示出识别出的STM32型号,点"Next"到下一步进行具体的操作。
OK, 下载HEX,擦除,上载(读Flash内容) 功能都一看就明白了吧。
第三种下载方式,从USB,需要ST的"DFUSe Demo"软件,也是从ST网站下载的(URL http://www.st.com/st-web-ui/static/active/en/st_prod_software_internet/resource/technical/software/demo_and_example/stsw-stm32080.zip)。也需要把BOOT0跳线接上,还必须连接USB口,然后PC提示找到了新硬件。安装好驱动以后,再启动软件,界面如下:
不过现在不能把HEX文件直接写入,而需要先生成dfu文件,使用一起安装得到的"DFU File Manager"程序,从HEX生成dfu.
至于 VID, PID 我还是保留和原来的一致,不然得重新安装驱动(为什么要使用DFU文件我还没理解清楚)。得到dfu文件就可以用上面的软件烧写了。
怎么样,我cruelfox的开发板够精简吧? 后面我会跟贴讲解怎么编译程序,上面的程序是怎么被STM32运行的。
联系客服