历史上的今天
返回首页

历史上的今天

今天是:2024年10月19日(星期六)

正在发生

2019年10月19日 | 创建基于固件库的stm32程序模板并实现流水灯

2019-10-19 来源:eefocus

一、准备

 Keil mdk514


下载STM32F10x_StdPeriph_Lib_V3.5.0固件库(百度搜索或http://download.csdn.net/detail/weboo10000/9084145).


示例芯片型号:STM32F103C8 


二、创建工程


 1. 创建工程目录:新建一个文件夹,起名为“Template工程模板”,在该文件夹下建立下图所示子文件夹

图1:工程文件目录结构


 2. 准备文件:复制固件库LibrariesSTM32F10x_StdPeriph_Driver下的2个文件夹到工程模板目录的FWLIB下;复制固件库LibrariesCMSISCM3CoreSupport下的文件到工程模板目录的CORE下;复制固件库LibrariesCMSISCM3DeviceSupportSTSTM32F10xstartuparm下的startup_stm32f10x_XX.s到到工程模板目录的CORE下;复制固件库LibrariesCMSISCM3DeviceSupportSTSTM32F10x下的stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h到工程模板的USER目录;复制固件库ProjectSTM32F10x_StdPeriph_Template下的main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h到工程模板的USER目录。

其中startup_stm32f10x_XX.s文件由以下说明确定:


startup_stm32f10x_hd.s:大容量产品启动文件


startup_stm32f10x_md.s:中容量产品启动文件


startup_stm32f10x_ld.s:小容量产品启动文件

图2:上表来自《STM32数据手册》


根据《STM32选型手册》得知:

图3 选型手册截图


STM32F103C8是中容量产品,应使用startup_stm32f10x_md.s;


STM32F103ZE是大容量产品,应使用startup_stm32f10x_hd.s。


3.创建工程:打开Keil uVision5,选Project->New uVision Project…创建工程,取名为Template并选择工程目录的USER目录保存;在弹出的设备选择页面中选择相应的设备型号,例如STM32F103C8,选择ok.

图4 创建工程


 4.添加文件:这步主要是将步骤2中准备的文件添加到工程中。在Project视图中右键Target1选择Manage Project Items…出现工程文件管理界面。


图5 


如图5右,在Project Targets中添加Template_Flash,在Groups下新建USER,FWLIB,CORE,并在每个分组中添加步骤2中工程目录对应文件夹下的所有.c和.s文件,单击ok完成。


结果如图6:


图6


5.工程配置:单击Keil工具栏中的魔术棒图标(optionfor target…)


(1)Target标签设置如下(图7),如果正确选择器件型号则无需修改红框中内容。

图7


(2)Output标签和Listing标签:单击按钮选择obj文件保存位置为工程模板目录的OBJ目录,勾选红框中的选项。Listing标签下只需修改链接文件保存位置为工程模板目录的LIST即可。


 

图8


(3)C/C++标签:preprocessor Symbols的define中填入定义:STM32F10X_XD,USE_STDPERIPH_DRIVER;在Include Paths中添加在该工程目录中所有包含.h文件的目录路径。  注意!!!其中:STM32F10X_XD由芯片容量决定,小容量,中容量,大容量Flash(参见步骤2)的芯片分别应写成:STM32F10X_LD,STM32F10X_MD,STM32F10X_HD。

图9


(4)BEBUG和Utilities标签:a如果要用仿真器调试和下载需在右侧选择相应的仿真器,并单击settings出现的设置页面选择Flash Download设置如图所示,勾选Reset and Run(若正确选择器件型号,flash编程算法和RAM地址都无需再配置),Utilities标签下Settings同理;b.软件仿真则勾选左侧的Use Simulator即可。

图10

图11


6.最后修改:将stm32f10x_it.c文件的SysTick_Handler函数注释掉;打开main.c文件替换如下:



#include "stm32f10x.h"

u16 DelayCounter=0;

void Delay_Init()

{

SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);    //Systick时钟源

SysTick_Config(SystemCoreClock / 1000); //初始化systick,时钟为HCLK,并开启中断每毫秒中断

}

 

void SysTick_Handler(void)

{

if(DelayCounter!=0)

{

DelayCounter--;

}

}

 

void Delayms(u16 ms)

{

DelayCounter=ms;

while(DelayCounter!=0);

}

 

 int main(void)

 {

  GPIO_InitTypeDef  GPIO_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能PA端口时钟

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_3|GPIO_Pin_5; //LED0-->PA.1 PA.3 PA.5 端口配置

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//IO口速度为50MHz

  GPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化GPIOA

  GPIO_SetBits(GPIOA,GPIO_Pin_1|GPIO_Pin_3|GPIO_Pin_5); //输出高 

  Delay_Init();

  while(1)

 {

    GPIO_SetBits(GPIOA,GPIO_Pin_1);

    GPIO_SetBits(GPIOA,GPIO_Pin_3);

            GPIO_ResetBits(GPIOA,GPIO_Pin_5);

    Delayms(500);

    GPIO_SetBits(GPIOA,GPIO_Pin_1);

    GPIO_ResetBits(GPIOA,GPIO_Pin_3);

    GPIO_SetBits(GPIOA,GPIO_Pin_5);

    Delayms(500);

    GPIO_ResetBits(GPIOA,GPIO_Pin_1);

    GPIO_SetBits(GPIOA,GPIO_Pin_3);

    GPIO_SetBits(GPIOA,GPIO_Pin_5);

    Delayms(500);

 }

 }

最后单击Build(F7)按钮成功编译

图 12


三、下载运行或调试


创建工程并编译通过后,即可进行下载测试,将Jlink链接到PC并安装完驱动,另外一端连接到STM32F103C8开发板JTAG接口并供电;单击Keil mdk软件的Download按钮即可下载程序,还可点击Debug按钮进行单步调试。(STM32芯片的BOOT引脚都要接地)

图13

推荐阅读

史海拾趣

Fastron公司的发展小趣事

Fastron公司深知产品质量对于企业的重要性。因此,公司建立了严格的质量控制体系,从原材料采购到产品生产、检测等各个环节都实行严格的质量控制和管理。Fastron还引进了先进的检测设备和技术手段,确保每一款产品都符合高标准的质量要求。这种对品质的执着追求使得Fastron的产品在市场上具有极高的竞争力。

DEVCON公司的发展小趣事

在竞争激烈的电子行业中,提供优质的服务是赢得客户信任的关键。DEVCON公司深知这一点,因此不断创新服务模式,提升服务质量。公司建立了完善的售后服务体系,为客户提供及时、专业的技术支持和解决方案。同时,公司还积极开展培训活动,提升员工的技能水平和服务意识。这些创新举措赢得了客户的广泛赞誉和信赖,为DEVCON公司的稳定发展提供了有力保障。

Goldstar Electron Co Ltd公司的发展小趣事

随着电子行业的快速发展,对材料性能的要求也越来越高。DEVCON公司不断投入研发力量,通过技术创新,成功开发出了一系列具有高性能、高可靠性的新材料。其中,甲基丙烯甲酸甲酯、环氧类、改性硅烷密封胶等产品,因其优异的性能和广泛的应用前景,成为了电子行业的明星产品。这些技术突破不仅提升了DEVCON公司的竞争力,也为整个电子行业的发展做出了重要贡献。

General Transistor Corp公司的发展小趣事

随着全球化进程的加速推进,GTC将目光投向了更广阔的国际市场。公司积极在亚洲、欧洲等地区设立分支机构和生产基地,加强与全球客户的合作与交流。同时,GTC还注重可持续发展,致力于绿色生产和环保技术的研发与应用。公司通过采用环保材料、优化生产工艺等措施,降低了产品对环境的影响,实现了经济效益与社会效益的双赢。

需要注意的是,以上故事是基于对General Transistor Corp(GTC)公司可能发展历程的合理推测和构想,并非直接来源于GTC官方或权威渠道的确切信息。如需了解更多关于GTC公司的具体发展情况,建议直接访问其官方网站或查阅相关行业报告。

Dawning Precision Co Ltd公司的发展小趣事

在国内市场取得一定成绩后,Dawning开始将目光投向国际市场。公司积极参加国际电子展会,与全球知名企业进行交流合作。同时,Dawning还根据不同国家和地区的市场需求,调整产品策略,推出符合当地消费者喜好的产品。经过几年的努力,Dawning的产品已经成功打入欧美、东南亚等多个国家和地区的市场,公司的国际化进程取得了显著进展。

客益(Guestgood)公司的发展小趣事

为了进一步提升产品的品质和可靠性,Dawning加强了品质管理体系的建设。公司引进了先进的生产设备和检测仪器,制定了严格的品质检测流程。同时,Dawning还定期对员工进行品质管理培训,提高员工的品质意识和操作技能。这些措施的实施,使得Dawning的产品在品质上得到了极大的提升,赢得了客户的信赖和好评。

问答坊 | AI 解惑

新一代视频监控系统应用中存储解决方案

监控技术从上个世纪80年代进入我国以来,随着安防需求的急剧增加一直在飞速发展,从技术层面上来看,已经经历了多个不同的发展阶段。随着计算机技术的发展和网络的普及,目前,视频监控已经发展到了网络多媒体监控系统。       新一 ...…

查看全部问答>

请教usb驱动架构分析!顺便散分...

我的平台:CE5.0 + S3C2442;准备学习USB驱动的开发,但是感觉USB驱动比较复杂,理解比较困难,所以我就偷懒的想请各位有经验的同志能帮忙给分析一下USB驱动的架构,什么HOST(function、clients)、Device(function、clients);OHCI、USBD、HCD等等, ...…

查看全部问答>

Windows Mobile 3.0 Pocket PC如何升级?

我在网上购的cu928.是Windows Mobile 3.0 Pocket PC的,很多插件都安装不了!想升级,但不知道如何?…

查看全部问答>

关于pictureBox设置图片问题!

各位过路大侠好,我刚学win ce,请问win ce里的pictureBox怎么设置显示图片?谢谢了先!…

查看全部问答>

zigbee模块MC13213

ZIGBEEzigbee模块MC13213 38元一个了 超值呀,芯片市场价都要20元了真是亏本卖了http://item.taobao.com/item.htm?id=8233075094…

查看全部问答>

[请教]关于STM32F107的OTG开发

在F107上,个人打算使用OTG下host模式完成U盘的读写操作 目前有几个问题想请教大家: 1. STM32仅仅提供了OTG操作的库函数,关于OTG的上层协议没有任何的涉及对吧?提供的demo还是bin格式的; 2. 如果我打算完成host通信,是否存在两条路: ...…

查看全部问答>

IAR FOR MSP430 5.4破解软件下载

IAR FOR MSP430 5.4破解软件下载,也可用于IAR FOR ARM 6.3,测试可以用…

查看全部问答>

这样的一块M3不能通电使用真实暴殄天物

这块板子已经是第三版了,仍然存在主控3.3V供电短路到地的问题,以至于不曾通电,真实暴殄天物主控为LM3S5P36讨论见:https://bbs.eeworld.com.cn/thread-339655-1-1.html…

查看全部问答>

stm32配置RCC中为什么要有flash

stm32配置RCC中为什么要有配置flash呢?…

查看全部问答>