• 首页
  • 项目
  • 会员
  • 博客
  • 共享建站
  • 秀我网游
  • BUG反馈

只要钻研不要钱

只要钻研不要钱
不要浪费每一分每一秒,珍惜眼前,怀念过去。

博客分类

  • 心情文章
  • LINUX技术
  • 情情的故事
  • 构思
  • C#技术
  • JAVA技术
  • 其它
  • NHibernate
  • 嵌入式开发
  • 娱乐
  • 项目管理
  • 单片机
  • C语言
  • STM32

最新日志

  • 单网卡 Ubuntu 服务器打造 PPTP Server
  • Ubuntu php 环境配置
  • Ubuntu下Ftp的安装和配置(vsftpd)
  • 为Windows 7 Professional安装多语言包
  • 在 .NET Framework 3.5 中管理目录安全主体
  • 自制ghost光盘如此简单
  • NSIS安装制作基础教程
  • Magic Mouse拆解
  • 美国买的thinkpad在国内保修的方法
  • ActiveX控件打包成Cab置于网页中自动下载安装
  • VB控件实现IObjectSafety安全接口,保证控件自动下载
  • 微软代码签名证书(.pvk/.spc)签名指南
  • 如何為你的 firefox plugin 加上新的 method
  • 如何让Firefox Plugin可以在网页中自动安装
  • mozilla firefox 插件开发 快速入门

[原创]STM32基于FWLIB 3.12学习笔记二 也是点亮发光二极管

小字体 中字体 大字体


如果无法查看图片,请直接访问我的博客地址:http://showvi.com/Blog/CategoryAirticleList/90

上一章我们已经设置好ECLIPSE的开发环境,那么接下来所讲的都是基于ECLIPSE上进行开发,当然代码和在MDK里都是一样的,你也可以把这里提到的代码放到MDK里进行编译运行。

在STM32里,每一个IO设备在使用前都必需进行初始化,且打开IO对应的时钟后才能使用,这是我学51和STM32最大的区别之一,51很简单,无需初始化就可以直接操作每一个IO口。好了,先来体验一下ECLIPSE开发带来的快感吧,打开ECLIPSE,选择FirstProject项目,打开main.c,先在顶部输入#include < ,然后按下ALT+/ ,可以选择我们需要的类库。

在main函数里试一下输入GPIO,然后按快捷键ALT+/ ,看到了吗,FWLIB的函数、常量等都一一列出来了,以后不会因为输错字母或者大小写问题导致出错了。

ECLIPSE的优点就讲到这了,还有很多功能大家慢慢发挖吧。

 代码比较简单,且都有注释了,我就直接贴出来好了。

/**
  ******************************************************************************
  * @file    Project/Template/main.c
  * @author  MCD Application Team
  * @version V3.1.2
  * @date    09/28/2009
  * @brief   Main program body
  ******************************************************************************
  * @copy
  *
  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  *
  * <h2><center>&copy; COPYRIGHT 2009 STMicroelectronics</center></h2>
  */

/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"
#include <stm32f10x_gpio.h>
#include <stm32f10x_rcc.h>
/** @addtogroup Template_Project
  * @{
  */



/* Private functions ---------------------------------------------------------*/

/**
  * @brief  Main program.
  * @param  None
  * @retval None
  */
GPIO_InitTypeDef gpio_int;
int main(void)
{
  /* Setup STM32 system (clock, PLL and Flash configuration) */
  SystemInit();
  //打开通用IO口A的时钟
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
 
  //设置OA口A的初始化信息,模式为GPIO_Mode_Out_PP,指定PIN为0,速度为50MHz
  gpio_int.GPIO_Mode=GPIO_Mode_Out_PP;
  gpio_int.GPIO_Pin=GPIO_Pin_0;
  gpio_int.GPIO_Speed=GPIO_Speed_50MHz;
  GPIO_Init(GPIOA,&gpio_int);
 
  //清除PIN0的值
  GPIO_ResetBits(GPIOA,GPIO_Pin_0);
 
  //设置PIN0的值为高位,即点亮IOA的PIN0脚
  GPIO_SetBits(GPIOA,GPIO_Pin_0);
  /* Add your application code here
     */

  /* Infinite loop */
  while (1)
  {
  }
}


/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/
 

在这里教大家一个巧门,在FWLIB3.12里的函数中,大部份函数的参数都和参数命名相关,即参数名是实际常量的一部分,如:
函数原型:void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
实际使用:GPIO_ResetBits(GPIOA,GPIO_Pin_0);

发现这个对我们开发有什么帮助呢?呵呵,这个用处就大了,不过我估计在ECLIPSE中才会显得更加有用,举个例子,在ECLIPSE中输入:

GPIO_ResetBits(  这个位置按下ALT+/ 会有相应的提示信息,请看下图

看到了吧,我们在实际使用函数时,对于参数,直接输入ECLIPSE提示里的参数名称加“_"线,然后按ALT+/,直接选择相应的常量就可以了,以后我们就不用翻来翻去的找这些常量的名称是什么了。

另外再讲一个KEILMAKE的实用配置,上一章我们说了设置编译时候的参数,如果我们需要调试,只要在ECLIPSE编译参数里的最后位置加上一个参数 debug 就可以调用MDK进行调试,那么如果要上传到开发板上呢?把debug改为upload即可,分别把这三种创建成配置即可,如图:

看到了吗,已经成功上传到开发板上了,这时板上的GPIOA的PIN0脚的二极管已经点亮了。

 

回顶部回顶部


日志评论


还没有人评论.
姓名:

内容:

验证码:




  • 首页|
  • 关于我们|
  • 服务|
  • 解决方案|
  • 有话要说|
  • 业务咨询|
  • 在线项目|
  • 登录|
  • 联系我们|

Copyright © wholuck 2009. All Rights Reserved.
粤ICP备09081412号