历史上的今天
今天是:2024年10月19日(星期六)
2019年10月19日 | 【STM32】入门 · 流水灯
2019-10-19 来源:eefocus
前提
keil uVision4
奋斗STM32开发板V5 STM32F103VET
JLink
具体
>新建工程
新建文件夹并命名,在此文件夹下建立user,fwlib,cmsis,output,listing等子文件夹。

user用于存放工程文件和用户层代码,包括主函数main.c。

fwlib用于存放STM32库里的inc和src文件夹,它们包含了芯片上所有的驱动。

smsis用于存放库自带的启动文件和一些位于cmsis层的文件。

output用于保存编译后的输出文件。
listing用于保存编译后生成的链接文件。
接下来打开Keil,新建工程和组,将对应的文件添加到对应的文件夹中。

点击工具栏中的按钮
,选择output选项卡,点击Select for Objects设置编译后的文件保存位置,即前面所建的output文件夹,其他设置修改如图。同理,点击Listing选项卡选择listing文件夹来保存生成的链接文件。

注意:编译器在编译器是搜索库的默认路径是KeilARMINCSTSTM32F10x,版本旧,在编译新版本库是存在不兼容,因此,我们需要屏蔽掉编译器默认库的搜索路径,操作如下。
点击工具栏中的按钮
,选择C/C++选项卡,在Define文本框中添加两个宏定义:
USE_STDPERIPH_DRIVER,STM32F10X_HD,并在Include Path栏添加库文件的搜索路径。


>配置JLink硬件调试
点击按钮,将Debug和Utilities选项卡下的设置修改如下。


至此,工程模板建立完成。
>main.c
#include "stm32f10x.h"
#define DELAY_TIME 0x3FFFFF
void Delay(__IO uint32_t nCount)
{
for(; nCount != 0; nCount--) ;
}
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_6|GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_Init(GPIOB, &GPIO_InitStructure);
while(1)
{
GPIO_SetBits(GPIOB, GPIO_Pin_5);
GPIO_ResetBits(GPIOD, GPIO_Pin_3);
GPIO_ResetBits(GPIOD, GPIO_Pin_6);
Delay(DELAY_TIME);
GPIO_SetBits(GPIOD, GPIO_Pin_6);
GPIO_ResetBits(GPIOD, GPIO_Pin_3);
GPIO_ResetBits(GPIOB, GPIO_Pin_5);
Delay(DELAY_TIME);
GPIO_SetBits(GPIOD, GPIO_Pin_3);
GPIO_ResetBits(GPIOD, GPIO_Pin_6);
GPIO_ResetBits(GPIOB, GPIO_Pin_5);
Delay(DELAY_TIME);
}
}
遇到的问题及解决方法

jtag模式下,出现此类问题的原因通常是MDK中的Flash的变成算法没有配置或者没有配置正确,在主菜单中打开Flash->Configure Flash Tools,选择Utilities选项卡,点击Settings按钮进入如下窗口,点击Add按钮选择和开发板对应的编程算法。


史海拾趣
|
前面介绍了SJA1000独立的CAN控制器的工作原理和电路本文将介绍SJA1000独立的CAN控制器应用指南以变可以更好的运用SJA1000… 查看全部问答> |
|
你听过能预言祸吉的咒语吗?虽然这是回到在古希腊时代才能听得到,它似乎在当今的整个美国,包括IT领域内的众多企业在内仍然存在并且十分盛行。 卡珊德拉,这位古希腊美女,被深爱她的阿波罗赋予了预知未来的禀赋。但当卡珊德拉拒绝他的时 ...… 查看全部问答> |
|
在PPC下编译出现如下编译错误: 2140: Error: unsupported relocation type &nb ...… 查看全部问答> |
|
为什么基于cepc和geode定制的系统,一个可以跳转,一个停在jumping..上 Debug Serial Init SysInit: GDTBase=80ad70e8 IDTBase=80b28ec0 KData=80b49800 Windows CE Kernel for i486 Built on Jun 24 2004 at 18:23:42 g_pPageDir = 80b4a000 Init ...… 查看全部问答> |
|
ADI USB全速隔离芯片ADUM4160 ADuM4160是一款基于ADI公司iCoupler®技术的USB端口隔离器。它将高速CMOS工艺与单片空芯变压器技术相结合,可提供优异的工作性能,并且很容易与低速和全速USB兼容外设集成。许多微控制器实施的USB只向外部引脚提供 ...… 查看全部问答> |
|
一块CC2530板子在下载时,出现“This device has been locked for debugging. To enable debugging and continue with... ”,导致无法下载,另外一块板子如此下载没有问题。 当用SmartRF Flsah pragrammer 下载.hex时,出现“Chip is locked! Not ...… 查看全部问答> |




