STM32-新建工程,点亮led

讲之前忽然想起来,keil arm和51一起安装需要做点工作,可以参考这里点击打开链接,我也简单讲一下,如下图

如果装了arm或51的keil就会有arm文件夹或者c51文件夹,在此基础上要再装一个,就直接把相应的那个文件夹复制到这里来,文件夹可以上网找,或者装了再复制出来,这样就有了arm和51两个文件夹,接下只要改一下TOOLS文件就行了,就是把相应加进来的文件夹的配置填到TOOLS里去,注意path要根据个人情况填安装的路径,具体的内容看 链接。

首先新建工程

我用的是正点原子的mini板,所以也是按着它的教程来学,新建工程自然也按照它的规范来。

首先新建一个工程的文件夹,名字随便。在这个文件夹内新建文件夹如下

core是存放核心文件和启动文件    hardware放硬件有关驱动   obj放生成的目标和过程文件   fwlib就是stm32的库文件,system放的是我买的单片机商家给的函数,比如延时什么的,我觉得暂时可以不用,user下自动生成的三个文件夹是编译生成的中间文件  可删掉其中...it 是中断有关文件,system_stm32f10x是时钟初始化,stm32f10x类似reg51.h, 是所有stm32库都会引用的文件,里面有所有的寄存器定义       conf就是库配置文件,main函数也放在user这

大致看一下里面有什么

core

fwlib(固件库STM32F10x_StdPeriph_Lib   可以从网上下过来再找到这两个文件夹复制过来)

user

到这里文件的准备工作就好了,再简单说下新建工程

像原先新建51的工程时一样点,选择型号的时候注意如下,根据自己的单片机选

结束后把刚才新建的这些文件慢慢加到工程里去

待会点亮led的驱动部分就放到hardware里,main就加到user去,还有三个需要注意的

第一点   在define那填   STM32F10X_HD,USE_STDPERIPH_DRIVER  前面一句是容量还是什么的,反正要根据单片机来,后面一句看下面

这是stm32f10x.h最后几行的内容,而stm32f10x_conf.h中包含了所有头文件,也就是说没后面那句define的话每次都把所有库文件都烧进去了,显然会很慢,所以我们还是定义比较好

第二点  #include path那要填所有头文件所在的地址,必须是直接的,比如在...hardware\led下有led的头文件,那就必须填hardware\led 不能填hardware

第三点,改一下生成目标文件的地址   三点如下图

这些设置结束后,把这个工程文件夹单独保存下来,毕竟这个过程还是挺麻烦的,以后直接复制这个文件夹,在修改下工程名字,加入适当硬件驱动和main函数就行了

下面讲点亮led

点亮led就是控制io口,stm32的io口显然不像51那么简单,先来宏观的讲一讲,stm32有A-G七组io口,每组16个io口,也就是说理论上最多能连出112个io口,每组都由七个寄存器控制,七个寄存器特定的位对应特定的io口的相应功能,比如CRL和CRH两个寄存器,每个io口有对应四个位控制其输入输出的模式和速度,每个寄存器32位,则这两个寄存器刚好控制16个io口,即一组,每组都有相应的CRL和CRH

复位时为浮空输入模式

目前是用库函数,所以寄存器先不细讲了,库函数设置两个io口如下

main如下

#include "led.h"
void delayms(u16 time)
{
   u16 i=0;
   while(time--)
   {
      i=8000; //不怎么准的。。。查了一下是默认72mhz的系统频率,网上说是这里12000,但是我用的时候感觉大了不少,8000还靠谱一点,先放着吧。。。
      while(i--) ;
   }
}
int main()
{

	LED_Init();
	while(1)
	{
	    GPIO_SetBits(GPIOA,GPIO_Pin_8);//PA8置高
	    GPIO_ResetBits(GPIOD,GPIO_Pin_2);//PB2置低
	    delayms(300);
	    GPIO_ResetBits(GPIOA,GPIO_Pin_8);
	    GPIO_SetBits(GPIOD,GPIO_Pin_2);
	    delayms(300);
	}
	return 0;
}


我这里没用那个正点原子给的system文件夹里的代码,所以那个文件夹空着也行

具体库函数里面是怎么写的以及时钟之类的下次有空再讲,先附上几张有关时钟的图片

时间: 2024-11-01 04:59:38

STM32-新建工程,点亮led的相关文章

STM32学习笔记——点亮LED

STM32学习笔记——点亮LED 本人学习STM32是直接通过操作stm32的寄存器,使用的开发板是野火ISO-V2版本: 先简单的介绍一下stm32的GPIO: stm32的GPIO有多种模式: 1.输入浮空 2.输入上拉 3.输入下拉 4.模拟输入 5.开漏输出 6.推挽式输出 7.推挽式复用功能 8.开漏复用功能 stm32GPIO模式设置相关寄存器设置的介绍 stm32中文参考手册中对GPIO模式设置对应寄存器的详细介绍: 下图为开发板LED的接线图: 根据上面的电路图可知,将GPIOB

STM32学习之路-点亮LED

STM32学习笔记—点亮led灯 STM32的I/O口有很多的功能,所以称为GPIO(GENERAL PURPOSE) 其中GPIO又分为A,B,C,D,E,F,G不同的组,每个组端口又分为0~15,共16个不同的引脚,不同的芯片引脚数量也不同,所用的学习板为STM32F103RBT6; I/O口的八种模式: 输入浮空:                  模拟输入: 输入上拉:                  输入下拉: 开漏输出:                  推挽输出: 推挽式复用功能

STM32F407第一步之点亮LED

STM32F407第一步之点亮LED. 要点亮LED,首先了解一下F4的GPIO模块.首先看一下STM32F4数据手册,GPIO模块的内部结构图 看上去有点复杂,不要怕,慢慢理解就可以了.对外引脚那里二极管就是保护的作用.通过上.下拉对应的开关配置,控制引脚默认状态的电压,开启上拉的时候引脚电压为高电平,开启下拉的时候引脚电压为低电平,这样可以消除引脚不定状态的影响.但是这个不应该用来作为外部的上拉或下拉用,如按键的拉电阻不能用这个内部来作用,如果用可能会引起按键不稳定. GPIO 具有了“推挽

使用寄存器点亮LED——编程实战

stm32的编程和stc89c51还是存在着很多思想上的不同的,在51单片机中,我们点亮LED灯,只用给对应IO高低电平就可以了,而stm32中,就一个简单的GPIO,我们也需要配置好几个寄存器,而且,就算配置好GPIO寄存器,我们还必须有一步不能缺少的操作,那就是开启对应GPIO的时钟.在stm32的编程中,开启对应时钟是必不可少的一个操作,而且,开启时钟的操作必须在配置相应寄存器之前,以GPIO为例,如果我们先配置GPIO的寄存器,不开启时钟或者先配置GPIO寄存器,最后再开启时钟,都不能正

第11章 GPIO输出-使用固件库点亮LED—零死角玩转STM32-F429系列

第11章 ????GPIO输出-使用固件库点亮LED 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege ? 本章参考资料:<STM32F4xx参考手册>.库帮助文档<stm32f4xx_dsp_stdperiph_lib_um.chm>. 利用库建立好的工程模板,就可以方便地使用STM32标准库编写应用程序了,可以说从这一章我们才开始迈入STM32开发的大门. LE

第11章 GPIO输出—使用固件库点亮LED

第11章     GPIO输出-使用固件库点亮LED 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 本章参考资料:<STM32F4xx参考手册>.库帮助文档<stm32f4xx_dsp_stdperiph_lib_um.chm>. 利用库建立好的工程模板,就可以方便地使用STM32标准库编写应用程序了,可以说从这一章我们才开始迈入STM32开发的大门. LED灯

嵌入式学习笔记002-点亮led

正如编写第一个程序所打印"hello world"那样,对TQ2440开发板的初次使用也是从最简单的部分入手,点亮led灯无疑是最简单的,起码只要设置几个寄存器就好,比起打印容易得多了,后续会讲到串口部分再来实现我们这句金典的对白~~~~ 板子共有4个led灯,如果能够成功点亮其中一个,那么其他几个将不是问题,故而我们的目标是先点亮第一个先,在此我们必须理清几个问题: a. led的引脚连接的相关寄存器 b. 编写的语言 c. 用什么来编译链接成可执行文件 d. 怎么download到

arm9 点亮led程序优化导致全亮问题

如需转载请注明出处 本实验是arm9 裸板程序,主要功能是循环点亮4个led. 参考伟山东的<嵌入式linux应用开发>点亮led节. 电路图如下: 代码如下: head.s .text .global _start _start: ldr r0, =0x56000010 @ WATCHDOG寄存器地址 mov r1, #0x0 str r1, [r0] @ 写入0,禁止WATCHDOG,否则CPU会不断重启 ldr sp, =1024*4 @ 设置堆栈,注意:不能大于4k, 因为现在可用的内

【蓝牙低功耗BLE】控制GPIO来点亮LED

这节讲一下最简单的,也是最基础的东西,CC2540的IO操作,把PORT口当做GPIO来用,废话不多说,往下看. 1.硬件电路 硬件电路时最简单的,用一根GPIO去控制LED灯,由于GPIO作为output,所以也不用管GPIO的模式. 还是挺简单的,控制左边GPIO的高低来开关LED灯. 2.相关寄存器 P0SEL      P0[7:0]功能设置寄存器,默认设置为普通I/O口 P0INP P0[7:0]作为输入口时电路模式寄存器,可以设置为输入上下拉等 P0 P0[7:0]可以位寻址的I/O