历史上的今天
返回首页

历史上的今天

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

正在发生

2019年10月19日 | 初学STM32及GPIO入门之流水灯

2019-10-19 来源:eefocus

一.准备工作---建立一个keil工程


STEP1.

打开keil,选择project-new uvision project,建立一个LED工程

STEP2.

在工程文件保存的路径下新建以下文件夹,在官网上或其他渠道下载STM32的3.5版库,将inc 和scr文件夹放入fwlib中。将startup_stm32f10x_hd.s放入asm文件夹中。将库文件放入cmsis中。

STEP3.

在keil中分别新建 【startcode】【user】【fwlib】【cmsis】四个组,再按照下图所示将C文件加入组中。这里要注意的是组里面添加的都是汇编文件和C文件,头文件不需要添加。

STEP4.

为了更好的理清各项文件,我们再设置一下各项输出文件的保存路径


1.设置编译后输出文件的保存路径

2.设置链接输出文件

STEP5.

此时我们若直接编译C文件将会出现很多错误,其原因是 编译器在编译时搜索的默认库一STM32官方驱动的头文件,与inc的差不多,编译至我们的新版本库时存在不兼容,故我们需要屏蔽掉编译器默认库的搜索路径。

添加USE_STDPERIPH_DRIVER:为了使用ST官方库


添加STM32F10X_HD:可以使用库文件里面为大容量定义的寄存器


(补充:芯片是小或中容量的时候宏要换成STM32F10X_LD或STMF10X_MD)

完成!




二.编写程序

程序要求---三个LED灯依次亮后熄灭

完整程序如下


#include "stm32f10x.h"

#define DELAY_TIME   0x3FFFFF

 

void Delay(__IO uint32_t nCount)

{

   for(; nCount != 0; nCount--) ;

}

 

int main(void)

{

GPIO_InitTypeDef   GPIO_InitStructure;                  /*定义一个GPIO_InitTypeDef类型的结构体*/

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);                     /*开启GPIO的外设时钟*/

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); 

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_6|GPIO_Pin_5;        /*选择一控制的GPIO引脚*/    

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                          /*设置引脚模式为通用推挽输出*/

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                         /*设置引脚速率为50MHz*/

GPIO_Init(GPIOB,&GPIO_InitStructure);                                    /*调用库函数,初始化GPIOC*/

GPIO_Init(GPIOD, &GPIO_InitStructure);  

 

  while(1)     /*延时装置*/

  {

  GPIO_SetBits(GPIOB, GPIO_Pin_5);

  GPIO_ResetBits(GPIOD, GPIO_Pin_6);

  GPIO_ResetBits(GPIOD, GPIO_Pin_3);

  Delay(DELAY_TIME);

          GPIO_SetBits(GPIOD, GPIO_Pin_6);

  GPIO_ResetBits(GPIOB, GPIO_Pin_5);

  GPIO_ResetBits(GPIOD, GPIO_Pin_3);

  Delay(DELAY_TIME);

  GPIO_SetBits(GPIOD, GPIO_Pin_3);

  GPIO_ResetBits(GPIOB, GPIO_Pin_5);

  GPIO_ResetBits(GPIOD, GPIO_Pin_6);

  Delay(DELAY_TIME);

  }

}


三.实操过程中出现的问题:

1.三个LED灯分别来自于两个不同的组,在编程过程中时常只记得编写一个组,导致只有一个LED灯保存常量状态。


解决方法:仔细检查程序,分析出现问题的原因。

推荐阅读

史海拾趣

Amerace Electronic Components公司的发展小趣事

Amerace Electronic Components公司注重企业文化的塑造和传播。公司倡导团结、创新、诚信、共赢的企业精神,鼓励员工积极进取、勇于创新。同时,Amerace还注重员工福利和职业发展,为员工提供良好的工作环境和晋升机会。这种积极向上的企业文化使得Amerace的员工队伍保持稳定和高效,为公司的发展提供了有力保障。

这些故事展示了Amerace Electronic Components公司在电子行业中的发展历程和取得的成就,突显了其在技术创新、全球市场扩张、质量管理、环保理念践行以及企业文化塑造等方面的努力和成果。

南京中科微公司的发展小趣事

CSM成立以来,一直致力于研发具有自主知识产权的射频/模拟关键芯片。经过数年的辛勤耕耘,团队成功开发出了多款高性能的集成电路芯片与模块,其中不乏在功耗、成本、性能等方面达到国际先进水平的产品。这些技术突破不仅为公司赢得了市场的认可,也为国内电子行业的发展注入了新的活力。

ACCRETECH公司的发展小趣事

CSM成立以来,一直致力于研发具有自主知识产权的射频/模拟关键芯片。经过数年的辛勤耕耘,团队成功开发出了多款高性能的集成电路芯片与模块,其中不乏在功耗、成本、性能等方面达到国际先进水平的产品。这些技术突破不仅为公司赢得了市场的认可,也为国内电子行业的发展注入了新的活力。

CMOS Sensor Inc公司的发展小趣事

为了保持技术领先地位,CMOS Sensor Inc公司高度重视研发投入。公司拥有一支专业的研发团队,致力于新技术、新产品的开发。同时,公司还与多所高校和研究机构建立了紧密的合作关系,共同推动光电图像采集技术的发展。这些举措使得CMOS Sensor Inc在行业中保持了持续的创新能力。

Densitron公司的发展小趣事

在全球环保意识日益增强的背景下,Densitron公司积极响应环保号召,将绿色可持续发展作为公司的重要战略之一。公司投入大量资源研发环保型产品和技术,减少生产过程中的能源消耗和污染排放。同时,公司还积极参与环保公益活动,推动整个行业的绿色发展。这些努力不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实基础。

以上即为基于电子行业背景为Densitron公司虚构的5个发展故事。这些故事虽然并非基于真实事件,但反映了电子行业普遍关注的技术创新、市场拓展、行业变革、人才培养和绿色发展等关键要素。

CIF公司的发展小趣事

D公司始终坚持品质至上的经营理念,以提供高品质的电子产品为己任。在CIF交易模式下,D公司严格控制产品质量,从原材料采购到生产流程中的每一个环节都进行严格把关。凭借出色的产品质量和良好的售后服务,D公司赢得了客户的信任和好评。

问答坊 | AI 解惑

2010年北京电子信息大赛

本帖最后由 paulhyde 于 2014-9-15 09:33 编辑 2010年北京电子信息大赛定于5月30号举行,赛方提供xilinx的SOPC开发板,定于4月份发放,就此请大家发一些建设性的培训意见和关于xilinx的sopc的一些技术文档,请大家多多支持。  …

查看全部问答>

lpc1343之一:ADC详解

    五一期间没有闲着,除了5月2日看望父母以外,其余时间都学习LPC1343。经过2天努力,总算对LPC1434有一个大概了解。     今天把学习笔记整理出来,和大家共享。其中免不了对原文的误解,诚心的请大家指正。有些 ...…

查看全部问答>

求救 fatal error RC1015: cannot open include file 'winver.h'.

各位大人 我刚接触wince 今天装好平台 运行hello world 编译就报错 fatal error RC1015: cannot open include file \'winver.h\'. 请高手指点下…

查看全部问答>

关于plc

我是plc菜鸟,我想问下plc输入,输出端子标号为 com的端子有什么用?怎么用? 越详细越好,最好有比较通俗易懂的例子…

查看全部问答>

紧急求助:开发应用程序要访问USB设备,如何知道该USB2.0设备是否只支持全速呢

1。若主机支持USB2.0,当高速USB设备连接后是否肯定当前工作速度是高速呢?能否人为切换到全速呢? 2。主机是否会检测到USB2.0设备不能支持高速,并将此信息记录在描述符或regedit中呢? 3。若主机支持USB2.0, 且设备当前工作速度是全速,能否断 ...…

查看全部问答>

vs2005 mfc工程移植入windows mobile

写的一个很简单的拼音输入程序,想植入windows mobile。我自己水平不行,希望哪个牛人帮忙做一下。愿意帮忙的留下邮箱,我发过来。…

查看全部问答>

怎样让spce061CPU跑起来???

我现在已经将spce61板连,probe,电脑接好了,Load的了一个程序,调试状态下,怎么也还是从main可以呢?不连接板的时候调试也是从main开始,我是通过PC指针开始进入程序是一样的,觉的cpu是没有跑起来。要怎样cpu才能跑起来,也是从main开始吗?还 ...…

查看全部问答>

请教做过270的camera驱动的大侠

最近一直在搞pxa270的camera的驱动,用的是ov2640,ov9653,现在遇到了一个奇怪的问题,就是YUV预览的时候,我设置dma直接从quick capture的3个数据寄存器到LCD的frame buffer。如果不去读pxa 270 quick capture那边的那3个数据寄存器的话,LCD上只 ...…

查看全部问答>

帮我看下代码C2061 C2660错误原因,我搞好长时间不知道为什么错 给分

帮我看下代码C2061  C2660错误原因,我搞好长时间不知道为什么错: //presetdlgs.h // int ReadHospitalInfo (const char *path, Hospital_Info *hospital_info); //presetdlgs.cpp ...... int ReadHospitalInfo (const char *path ...…

查看全部问答>

请问:cortexisp是通过哪个UART口实现???

                                 请问:cortex isp是通过哪个UART口实现???有没有相关文档?…

查看全部问答>