从STM32中学到的工程建立方法

发布者:和谐共融最新更新时间:2015-05-08 来源: 51hei关键字:STM32  工程建立 手机看文章 扫描二维码
随时随地手机看文章
    这阵子通过STM32的学习,学到的不仅仅是硬件的知识,关于工程的结构也学到了一些实用的东西。以前学习51的时候就是一个文件写到底,把所有的函数写到一个c文件中,所有的变量也定义在一个c文件中。

     但是这阵子接触到了模块化的思想,每一个外设,对应着一个单独的驱动程序,包括一个c文件还有一个h文件。在建立工程之后,先建立组,包括USER,可以把主文件放在这个组里面;SYSTEM组,可以吧系统的一些通用型文件放在这个组里面;HARDWEAR组,可以把外设放在这个组里面。还可以建立一个组放说明性的文件。这样使得整个工程的结构十分的清晰,在调试程序的时候十分方便,在以后自己重新看这个工程的时候也可以很快的理清整个工程个脉络。

    在主文件里面,也就是main.c文件里面,写主程序的代码,其他的函数通过调用头文件的方式来调用。对于每一个外设,都要有一个单独的驱动程序,这样的话可以十分方便的进行移植,记得在假期写的MSP430驱动12864液晶以及矩阵键盘的程序,修改了很少的地方就可以移植到STM32上进行使用,大大的缩短了自己的开发时间。在电设正式比赛的时候,我写程序基本上就是在复制粘贴,重新构架程序的框架,因为之前的训练中基本上把各个模块的驱动程序都写好了。

     在外设驱动程序的H文件中,主要进行函数的声明,一定要切忌在头文件中定义变量或者定义函数,因为在一个工程中,同一个变量或者函数可以被声明很多次,但是只可以进行一次定义!因为头文件可能不只是在一个文件中调用,所以不可以出现  定义!否则编译会出错的!函数的声明就是函数声明的一般形式。变量的声明可以采用   extern int i;的形式。但是一定要注意extern int i;和extern int i=0;的区别,前者是声明,后者是定义。只要是需要调用此外设驱动函数和变量的文件中,就要加上#include。H的结构一般为第一行写#ifndef   _xx_H,这句话判断xx.h是否已经被定义,第二行写#define ,两行的意思就是若果xx.h没有定义,就定义xx.h,下面就是写变量的声明和函数的声明了。最后一行一定要写#endif,这是和ifndef和define想匹配的一个结构,不可以少。

#ifndef   _LED_H

#define _LED_H

 

#define   LED0     PAout(9)

 

 extern u8 x;

 

void LED(void);

 

#endif

      在外设的c文件中,主要是定义相关的变量,还有相关的驱动函数,本文件所涉及到的函数使用也要通过头文件的调用进行声明。

      所以,头文件可以理解为就是各个c文件之间连接的桥梁。在各个c文件中才是变量以及函数的声明。

关键字:STM32  工程建立 引用地址:从STM32中学到的工程建立方法

上一篇:接触STM32F407芯片的总结
下一篇:Stm32的TFT LCD显示器控制学习笔记

推荐阅读最新更新时间:2024-03-16 14:01

关于STM32定时器中TI1FP1 与TI1FP2及相关话题
整体来讲,STM32各个系列的TIMER外设基本框架和功能是类似的,大体分高级定时器、通用定时器和基本定时器。除了基本定时器外,每个高级定时器或部分通用定时器都可以产生4对中间信号,分别是TI1FP1 与TI1FP2,TI2FP1 与TI2FP2,TI3FP3 与TI3FP4,TI4FP3 与TI4FP4,即每个输入通道可以生产1对信号。这里以STM32F103系列为例聊聊T这个 TImFPn,。 在SMT32各系列的参考手册的定时器部分,在描述高级定时器或通用定时器时都可以看到如下的一副图。图中对那4对信号被清晰地描绘了出来。 这四对信号可以统一写为:TImFPn,其中 m代表滤波和边沿检测器前的输入通道号,n代表经过滤
[单片机]
关于<font color='red'>STM32</font>定时器中TI1FP1 与TI1FP2及相关话题
STM32 中断向量表的位置 、重定向
我们也知道怎么跳到main函数了,那么,中断发生后,又是怎么跑到中断入口地址的呢? 从stm32f10x.s可以看到,已经定义好了一大堆的中断响应函数,这就是中断向量表,标号__Vectors,表示中断向量表入口地址,例如: AREA RESET, DATA, READONLY ; 定义只读数据段,实际上是在CODE区(假设STM32从FLASH启动,则此中断向量表起始地址即为0x8000000) EXPORT __Vectors IMPORT OS_CPU_SysTickHandler IMPORT OS_CPU_PendSVHandler __Vectors DCD __initial
[单片机]
<font color='red'>STM32</font> 中断向量表的位置 、重定向
STM32的bootloader IAP编程
不需要拆机就能对产品进行固件升级是很多人想要的效果,不仅方便而且节省精力和成本。那么如何完成这项工作呢?接下来所介绍的Bootloader就可以完成这项工作,通过Bootloader引导程序完成固件的升级。下面来浅析STM32 Bootloader设计。 首先谈谈stm32的ISP和IAP区别和联系。 ISP(In-System Programming)在系统可编程,指电路板上的空白器件可以编程写入最终用户代码, 而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程。IAP(In-Application Programming) 指MCU可以在系统中获取新代码并对自己重新编程,即可用程序来改变程序。ISP和IA
[单片机]
STM32-中断优先级
中断作为系统资源里面尤为重要的一种系统资源,可以对于硬件的运行发挥着不可或缺的地位。基本每一个硬件都会有相应的中断,只不过是中断类型和中断数量多少的问题。像51单片机的硬件就拥有比较简单中断类型,例如定时器中断、串口接收中断、外部中断等几个简单中断,用起来也是十分简单。 对于STM32来说因为它使用的基于M3和M4的内核,就M3内核而言,支持256个中断其中包含了16个内核中断和240个外部中断,而且具有256级的可编程中断设置。但是STM32并没有将这些中断都添加到自身的硬件资源中而是使用了其中的部分中断,一种拥有84个中断,包括了16个内核中断和68个可屏蔽中断,具有16级可编程的中断优先级。103系列只有60个可屏蔽中
[单片机]
STM32串口超时判断方式接收未知长度数据
usart.c串口中断处理函数: void USART1_IRQHandler(void) { u8 res; if(USART1- SR&(1 5))//接收到数据 { res=USART1- DR; if(USART1_Recv_Len USART1_MAX_RECV_LEN) //还可以接收数据 { TIM3- CNT=0; //计数器清空 if(Rec_Over_Flag==0)TIM3_Set(1); //使能定时器4的中断 USART1_RX_BUF =res; //记录接收到的值 }else { Rec_Over_Flag=1; //强制标记接收完成 }
[单片机]
Stm32按键中断使LED灯闪烁
/* *说明: *PA0:KEY1;PA1:KEY2; *PA2:LED1;PA3:LED2; *PA9:USART1_TX;PA10:USART1_RX */ #include stm32f10x.h #include stm32f10x_rcc.h #include stm32f10x_gpio.h #include stm32f10x_crc.h #include stm32f10x_exti.h #include system_stm32f10x.h #include misc.h void RCC_Configuration(void); void GPIO_Conf
[单片机]
STM32-跑马灯实验代码分析
工程建立的主要步骤 1.新建3个文件夹:USER、SYSTEM、HARDWARE 2.新建led.c、led.h和test.c 3.在Target目录树上右击Manage Component,新建USER、SYSTEM、HARDWARE,并添加相关C文件(具体见前文 MDK使用方法与技巧 ),跟前面一样HARDWARE组添加led.c文件。 4.在Options for Target Target 1 对话框C/C++选项卡中Include Pathes里添加头文件路径。(这个不可少,否则编译出错,见前文 MDK使用方法与技巧 ,led.h文件不可漏掉) 5.使用SWD方式下载,具体见 MDK使用方法与技巧 ,注意reset
[单片机]
STM32速成笔记(5)—串口通信
一、什么是串口通信 串口通信是指外部设备与主控芯片之间,通过数据信号线、地线等,按位进行数据传输的一种通信方式,属于串行通信方式。串行通信是指使用一条数据线依次逐位传输数据,每一位数据占据固定长度的时间。可以看一下简单的串行通信示意图。 串口通信示意图 二、串口通信有什么用 这里简单列举一下串口通信的用途 • 下载程序 • 外设与单片机通信 单片机给外设发送一些指令或者配置信息,外设给单片机回传一些信息。 • 打印信息 比如将ADC采集到的电压发送给上位机的串口调试助手,或者实时监测某一个变量的变化。 三、STM32的串口通信 普中核心板上使用的STM32F103ZET6有三
[单片机]
<font color='red'>STM32</font>速成笔记(5)—串口通信
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved