STM32快速入门教程

发布者:心满愿望最新更新时间:2015-08-13 来源: eefocus关键字:STM32  快速入门  教程 手机看文章 扫描二维码
随时随地手机看文章
开发编译的软件: IAR EWARM 4.42A 

JTAG工具:      ST-LINK2(开发板自带)
开发板:        万利 STM32EK(199元)

建议看的资料
《STM32F10X-128K-EVAL MCU》  ST公司 STM32开发板的电路图
《STM32技术参考手册—RM0008.pdf 或 STM32F103-CN.pdf 》
《Cortex-M3权威指南Cn.pdf》
《如何在IAR下使用STM库.pdf》
《STM32F10xxx_Library_Manual_ChineseV2.pdf》
《汉化STM32F的固件.rar》----网友: SUNKE9
《 netjob的BLOG上的初学者笔记 》

STM32 :把引脚BOOT1,BOOT0接地,3。3伏特供电,STM32就可以运行,无需外部接晶振。
芯片内部有复位电路。STM32上电后默认使用内部【精度8MHZ左右】晶振,如果外部接了8MHZ,
可以切换使用外部8MHZ,并最终PLL倍频到72MHZ.

软件开发上,我们可以从万利公司或ST公司  给 IAR公司写的STM32例子,
首先一点,目前 STM32软件开发都是使用ST公司STM32库,而我的BLOG上例子不是使用STM32库。
我自己建立了STM32的头文件:stm32f103.h

原因是 ST公司的STM32函数库 太庞大复杂,效率低。 而且会让开发人员不懂的如何操作STM32
寄存器,不懂的CPU 是如何工作的。

一个STM32程序,有几个必要文件:


 stm32f103.h         我自己定义的 STM32头文件 用来代替STM32函数库
 cortexm3_macro.s 宏定义函数
 stm32f10x_vector.c 中断初始化
 stm32f10x_it.c  中断函数
 main.c   主函数

//===================================================
// 完整例子: 万利开发板上跑马灯程序
// 轮流点亮LED灯。
//===================================================

 cortexm3_macro.s
 stm32f10x_vector.c
 stm32f10x_it.c

 上面三个文件独立加入工程中。
 而且stm32f10x_it.c 可以不加,如果不可中断

【main.c内容:】

 #include "stm32f103.h"

  void delay(void);
  void STM32_RCC_Configuration(void); 
  void STM32_GPIO_Configuration(void);
  void STM32_NVIC_Configuration(void);
  void STM32_Led_Config(void);
 
 void main(void)
 {
  int i="0";
 
 
  STM32_RCC_Configuration();

 
  STM32_GPIO_Configuration();

 
  // STM32_NVIC_Configuration();// 可以省略 因为没开中断

  STM32_Led_Config();
   
  while(1)
  {

   delay();
   switch(i)
    {
      case 1:
        // GPIO_ResetBits(GPIOC, GPIO_Pin_4); //关LED5   这个是使用STM32库函数方法
        // GPIO_SetBits(GPIOC, GPIO_Pin_7);   //开LED2   这个是使用STM32库函数方法
       
        STM32_Gpioc_Regs->bsrr.bit.BR4 =1;// 1:清除对应的ODRy位为0
        STM32_Gpioc_Regs->bsrr.bit.BS7 =1;// 1:设置对应的ODRy位为1

      break;
      case 2:
        //GPIO_ResetBits(GPIOC, GPIO_Pin_7); //关LED2   这个是使用STM32库函数方法
        //GPIO_SetBits(GPIOC, GPIO_Pin_6);   //开LED3   这个是使用STM32库函数方法
       
        STM32_Gpioc_Regs->bsrr.bit.BR7 =1;// 1:清除对应的ODRy位为0
        STM32_Gpioc_Regs->bsrr.bit.BS6 =1;// 1:设置对应的ODRy位为1

      break;
       case 3:
        //GPIO_ResetBits(GPIOC, GPIO_Pin_6); //关LED3   这个是使用STM32库函数方法
        //GPIO_SetBits(GPIOC, GPIO_Pin_5);   //开LED4   这个是使用STM32库函数方法
       
        STM32_Gpioc_Regs->bsrr.bit.BR6 =1;// 1:清除对应的ODRy位为0
        STM32_Gpioc_Regs->bsrr.bit.BS5 =1;// 1:设置对应的ODRy位为1

      break;
       case 4:
        //GPIO_ResetBits(GPIOC, GPIO_Pin_5); //关LED4
        //GPIO_SetBits(GPIOC, GPIO_Pin_4);   //开LED5
        STM32_Gpioc_Regs->bsrr.bit.BR5 =1;// 1:清除对应的ODRy位为0
        STM32_Gpioc_Regs->bsrr.bit.BS4 =1;// 1:设置对应的ODRy位为1

        i="0";
      break;
      default :
        i="0";
      break;


    }//
    i++; //切换到下一个灯
  delay();

 

}//end main()
//======================================================  
//
//======================================================    
void delay(void)
{
 int i,j;
 j=0;
 for (i=0; i<0xfffff; i++) j++;  // 1,048,575
 
}//end sub

// netjob's blog 上的文件。。。
void STM32_RCC_Configuration(void){;} 
void STM32_GPIO_Configuration(void){;}
void STM32_NVIC_Configuration(void){;}
void STM32_Led_Config(void){;}

//======================================================  
//====================================================== 

关键字:STM32  快速入门  教程 引用地址:STM32快速入门教程

上一篇:STM32启动代码概述
下一篇:STM32入门经历

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

STM32 启动汇编程序详解
* 文件名 : startup_stm32f10x_hd.s ;* 库版本 : V3.5.0 ;* 说明: 此文件为STM32F10x高密度设备的MDK工具链的启动文件 ;* 该模块执行以下操作: ;* -设置初始堆栈指针(SP) ;* -设置初始程序计数器(PC)为复位向量,并在执行main函数前初始化系统时钟 ;* -设置向量表入口为异常事件的入口地址 ;* -复位之后处理器为线程模式,优先级为特权级,堆栈设置为MSP主堆栈 ;* Stack_Size EQU 0x00000200 ;定义堆栈的大小 ;AREA 命令指示汇编器汇编一个新的代码段或数据段。 ;段是独立的、指定的、不可见的代码
[单片机]
FlyMcu串口ISP下载STM32程序教程
开始写之前也是不能用的,但是为了使用,决定边探索怎么使用边写一篇博客! 最开始用过正点原子的开发板进行ISP下载,感觉挺好用,按照说明就好。 但是正点原子的板子用的是如下的一块电路: 这个电路很简单使用,但是如果你不懂,也很纠结,这里感觉有篇帖子写的很详细,可供大家参考,就不自己解释了,链接如下: http://www.51hei.com/bbs/dpj-35947-1.html 但是,很多人会想用一个USB转串口的小模块下载程序,怎么弄呢? 首先有一个小串口模块,注意转换为的电平是3.3V,不是标准的232电平那种的,东西如下 之后呢,将RXD,TXD,GND,VCC缺一不可的连接到你的STM32板子
[单片机]
FlyMcu串口ISP下载<font color='red'>STM32</font>程序<font color='red'>教程</font>
STM32笔记之七:让它跑起来,基本硬件功能的建立
0、 实验之前的准备 a) 接通串口转接器 b) 下载IO与串口的原厂程序,编译通过保证调试所需硬件正常。 1、 flash,lib,nvic,rcc和GPIO,基础程序库编写 a) 这几个库函数中有一些函数是关于芯片的初始化的,每个程序中必用。为保障程序品质,初学阶段要求严格遵守官方习惯。注意,官方程序库例程中有个platform_config.h文件,是专门用来指定同类外设中第几号外设被使用,就是说在main.c里面所有外设序号用x代替,比如USARTx,程序会到这个头文件中去查找到底是用那些外设,初学的时候参考例程别被这个所迷惑住。 b)
[单片机]
一文搞懂STM32开发用的HAL库
前言   相比较早几年使用标准库开发来讲,最近几年HAL库的使用是越来越多,那么我们开发应当使用哪一种呢,本文着重介绍常用的几种开发方式及相互之间的区别,白猫也好、黑猫也好,抓到耗子就是好猫。 STM32三种开发方式   通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全不一样的。一般大多数都会选用标准库和HAL库,而极少部分人会通过直接配置寄存器进行开发。   网上关于标准库、HAL库的描述相信是数不胜数。可是一个对于很多刚入门的朋友还是没法很直观的去真正了解这些不同开发发方式彼此之间的区别,所以笔者想以一种非常直白的方式,用自己的理解去将这些东西表述出来,
[单片机]
一文搞懂<font color='red'>STM32</font>开发用的HAL库
基于STM32的三轴数字罗盘HMC5883L模块的测试方案
  最近买了个数字罗盘模块,调通后发现很不错,非常灵敏,测试的时候精度在1°以内。连续测量模式下,最快测量、输出速率可达75hz,模块每次测量完毕并将数据更新至寄存器后,其DRDY引脚便产生一个低电平脉冲(可以配置一个外部中断捕获DRDY引脚的下降沿,并在中断服务程序中读取数据),在STM32中可以设置一个下降沿触发的外部中断,并在中断服务程序中调用角度数据读取函数。以下为操作该模块的主要步骤。   一、IIC协议相关操作(单片机作为主机控制时钟线)   宏定义:   //这里用到了STM32的位带区操作,方便实现对一个位的操作   //PB13配置为OD输出,同时外部给上拉电阻,这样既可输出信号给从机,也能   //在PB1
[单片机]
基于<font color='red'>STM32</font>的三轴数字罗盘HMC5883L模块的测试方案
STM32开发笔记68: keil中使用ST-Link不能成功下载的真实原因
单片机型号:STM32F091RCT6 在STM32开发笔记67: 在keil中使用ST-Link不能成功下载的解决方法提到解决keil中使用ST-Link不能成功下载的一种方法,经仔细分析其实原因还在于程序上。 不能成功下载的程序中,包含如下程序,: CInit::CInit(uint8_t mode) { //底层初始化 HAL_Init(); //GPIO时钟使能 __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENAB
[单片机]
关于STM32库函数中,u8_u16_等的定义
//stm32f10x.h文件内定义 typedef uint32_t u32; typedef uint16_t u16; typedef uint8_t u8; //无符号 typedef int32_t s32; typedef int16_t s16; typedef int8_t s8; //有符号 /* exact-width unsigned integer types */ typedef unsigned char uint8_t; typedef unsigned short int uint16_t; typedef unsigned int uint32_t; type
[单片机]
单片机快速入门实验:控制LED闪烁发光
如果说初学计算机编程,最简单的入门程序是在屏幕上显示“Hello world!”的话,那么学习单片机最简单的入门实验就是控制发光二极管(LED)闪烁发光。 P89LPC900系列单片机是近几年出现的新一代80C51内核单片机,许多人都想学习,并希望应用到自己的产品设计中。下面我就以控制LED闪烁发光这个最简单的实验为例,带领大家入门。 ●LPC900系列单片机简介 LPC900系列单片机是国际著名半导体厂商Philips公司(http://www.scn.semiconductors.philips.com/)推出的新一代80C51内核单片机。LPC900兼容标准80C51的指令系统和特殊功能寄存器(SFR),如果学过
[单片机]
单片机<font color='red'>快速入门</font>实验:控制LED闪烁发光
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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