STM32学习笔记 之绪论

发布者:Enchanted2021最新更新时间:2016-04-13 来源: eefocus关键字:STM32  学习笔记 手机看文章 扫描二维码
随时随地手机看文章
学习STM32也有些日子了。作为初学者,从最初的一无所知,到现在略知皮毛之皮毛,感觉着实不容易。

下面把自己的体会以及自认为初学者不易掌握的要点和大家分享一下,有错误的地方,欢迎大家指正。

 

一、关于学习方法

        初学STM32给我的一个感觉就是,概念繁多而且很多都可以继续深究下去,教程对此又不可能都很详细的论述,但于我来说如鱼鲠喉实在不爽。

因为我喜欢刨根问底,网络资料又实在繁杂,如此又耗费精力,又打击学习积极性。

        终于有一天,我转变了心态,如果STM32犹如枝繁叶茂的大树(整个嵌入式体系亦如此),我要做的不是连每一个叶子都明了,而是暂时只要知晓其主干及一些必要的干支即可。其他的枝叶等有时间再去深究,而很多脉络随着学习的深入也会逐渐清晰起来。

      所以很多地方需要不求甚解,只要知道个概念即可,这些并不会影响自己的编程设计。相信假以时日,随着经验的丰富,涉猎的广泛,总有一天会打通任督二脉,通体舒泰:)

 

二、初学者容易疏忽及困惑的地方

       这些只是我个人的体会,不一定完全正确

     1、Keil ARM使用问题

          a、忘记添加启动文件,我就出现过一次搞了半天才发现。。。其出错信息为“ error: L6236E: No section matches selector - no section to be FIRST/LAST.”

          b、忘了在Options of Target ->C/C++->Preprocessor Symbols->Define中添加“USE_STDPERIPH_DRIVER,STM32F10X_HD” 

                  前者的作用如下图,定义此参数后即可包含 stm32f10x_conf.h文件,而stm32f10x_conf.h可以设置包含(使用)固件库中的哪些外设。

                     

                  后者则根据所使用芯片flash的大小选择,后缀表如下:

                                 cl:互联型产品,stm32f105/107系列 
                                 vl:超值型产品,stm32f100系列 
                                 xl:超高密度产品,stm32f101/103系列 超大容量 512-1024K 
                                 ld:低密度产品,FLASH小于64K 
                              md:中等密度产品,FLASH=64 or 128 
                               hd:高密度产品,FLASH大于128-512

                启动文件的选择也可以参考此后缀。

      2、一些概念

 

              STM32固件库: STM32库为ST提供的API,基于它我们可以很方便的进行配置STM32寄存器等操作。

             一开始我局限于单片机编程的思维,固执的排斥固件库,想通过单纯寄存器操作来编程。后来发现如果只是配置个GPIO口,点亮几个LED直接用寄存器方式当然不复杂,但随着代码量的增加此方法将会使人抓狂,因为STM32寄存器繁多,又不容易记忆,如此编程时需要不停的翻参考手册,这不是折磨人嘛。

             而库函数则为我们封装了对寄存器的操作,提供了一系列的函数、宏、结构体等等,稍有点英文基础的话,会发现非常好记忆。记不住就直接复制黏贴:)

 

            CMSIS标准(CortexMicroController Software Interface Standard)主要包括以下两个方面

                    内核函数层:包含用于访问内核寄存器的名称、地址定义,由ARM公司提供

                    设备外设访问层:提供片上核外外设的地址和中断定义,由芯片制造商提供

            如想知道更详细的定义,请参考  点此

 

           固件库一些文件简介:

                    core_cm3.c 和 启动文件都属于底层文件,由ARM公司提供,遵守CMSIS标准

                    system_stm32f10x.c  由ST公司提供,遵守CMSIS标准。主要用于设置系统时钟和总线时钟。

                    stm32f10x.h    寄存器封装的一些相关定义

                    misc.c   提供外设对NVIC的访问函数

                    stm32f10x_it.c 中断服务函数

 

         位操作

                    a &=~(1<<6); bit6置0

                    a |=(1<<6);  bit6置1

                    a^=(1<<6);  bit6取反

关键字:STM32  学习笔记 引用地址:STM32学习笔记 之绪论

上一篇:STM32学习笔记之GPIO口的使用
下一篇:STM32F051应用笔记-系统时间选择及PLL倍频设

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

MSP430学习笔记3-PWM的产生
这个程序主要是利用定时器的比较输出功能来产生PWM波控制LED,定时器A的比较输出对应P2.3 P2.4,因此在程序的一开始需要设置比较匹配的工作模式,需要说明的是头文件中已经对各种模式给了详细的定义,不需要在去配置寄存器,程序较为简单,稍微扩展一下去控制舵机也很容易,大家自己分析。 /******************************************************* 程序功能:用从P2.3和P2.4输出的PWM波形驱动LED闪烁 ------------------------------------------------------- 拨码开关设置:将LED位拨至ON,其余拨至OFF
[单片机]
为什么要串口唤醒STOP模式?如何才能实现串口唤醒STOP模式呢?
前言 STM32常见的低功耗模式有三种:睡眠模式、STOP模式以及待机模式,STM32L系列还有其他低功耗模式。这里主要讲的是STOP模式,STOP模式可以通过外部中断或事件唤醒,但是不能通过串口中断唤醒,因为串口中断本身不是外部中断,那么如何才能实现串口唤醒STOP模式呢? 因为我这里只是为了做验证,为了快速验证,我也就没有用RT-Thread的PM电源管理组件进入STOP模式,感兴趣的读者可以用RT-Thread的电源管理组件去实现进行STOP模式。 一、为什么要串口唤醒STOP模式? 想象一下,在某些场合,如果你有一个无线通信模块(例如ESP8266、SIM800C)和STM32通过串口发送AT命令来对接服务器实现与服务
[单片机]
为什么要串口唤醒STOP模式?如何才能实现串口唤醒STOP模式呢?
关于STM32的变量定义
今天调试程序时,想观察一下变量的情况,突然发现平时经常移植别人程序时最容易忽略的一个致命问题,那就是忽略变量类型,这里有必要给大家一定知识啦,都是库里面的,非原创! 3.0以后的版本中使用了CMSIS数据类型,变量的定义有所不同,但是出于兼容旧版本的目的,以上的数据类型仍然兼容。CMSIS的IO类型限定词如表 5‑7所示,CMSIS和STM32固件库的数据类型对比如表 5‑8所示。这些数据类型可以在STM32F10x_StdPeriph_Lib_V3.4.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h中找到具体的定义,此部分定义如下。 1 /*! STM3
[单片机]
stm32 FSMC的函数解释
介于网上找的库函数中文版没有FSMC的,所有只能在这边转载一下FSMC的函数解析,供像我这样的菜鸟学习 typedef struct { uint32_t FSMC_Bank;//nor被分为四块,其中这个参数是说明对那个块编程 uint32_t FSMC_DataAddressMux;//地址\数据是否复用 uint32_t FSMC_MemoryType;//存储器类型 uint32_t FSMC_MemoryDataWidth;//数据总线宽度 8位/16位 uint32_t FSMC_BurstAccessMode;//是否进行成组模式访问 uint32_t FSMC_WaitSignalPo
[单片机]
sTM32 使用TIMx_CH1作为 Tx1F_ED 计数器时钟
环境:iar arm 5.3 stm32f103vbt6 使用PA.8 外部输入10Mhz的方波。可从systick中断得到数据4. 4×5000(预分频值)×1000(tick中断时间)=20MHz 属于双边沿检测,一个PA.8个脉冲有2个边沿,所以时钟加倍。 由于使用了TI1F_ED它的结构如下: void RCC_Configuration( void ) { /* Setup STM32 system (clock, PLL and Flash configuration) */ SystemInit( ); /* Enable GPIOA, GPIOC and USART1 clock */ RCC
[单片机]
<font color='red'>sTM32</font> 使用TIMx_CH1作为 Tx1F_ED 计数器时钟
STM32学习之EXTI
EXTI分为两个功能,一个产生中断,目的是把输入信号传到NVIC,进一步运行中断服务函数,实现功能,软件级;一个产生事件,目的是产生一个脉冲信号给其他外设使用,这是电路级别的信号传输,是硬件级别的。EXTI是挂载在APB2总线上的。EXTI0到EXTI15用于GPIO,EXTI16-EXTI22用于特定的外设中断/事件线。 一、初始化需要中断的GPIO 二、初始化EXTI用于产生中断/事件 使能SYSCFG时钟,使用GPIO外部中断必须使能SYSCFG时钟 连接EXTI中断源到GPIO 初始化EXTI结构体 1.EXTI中断/事件线选择,EXTI_Line:EXTI_Line0 -EXTI_Line22选择,但在STM32库函数中
[单片机]
STM32的瞬态运动参数存储测试系统设计
在瞬态运动参数测试中,对存储测试系统的实时性和功耗提出了更高的要求。提出了一种基于STM32的嵌入式存储测试系统的设计方案,介绍了该系统关键部分的软硬件设计,主要包括模拟信号调理、数据采集存储和USB数据回读。该系统具有实时性好、体积小、功耗低的特点,适合于恶劣环境下加速度信号的采集存储。试验结果表明,该系统工作稳定,实现了设计目标。 存储测试技术是在特殊环境下记录运动物体参数行之有效的方法,先将测试数据存入存储器,待装置回收后通过特定接口与上位机进行通信,还原数据信息。在诸多领域的测试中,对数据采集存储系统的实时性和功耗提出了更高的要求,随着半导体技术的发展,各种技术的进步使得高速度、低功耗的存储测试系统能够实现。 本系
[单片机]
<font color='red'>STM32</font>的瞬态运动参数存储测试系统设计
STM32速成笔记(3)—按键检测
一、按键 检测 原理 按键检测原理比较简单,按键按下和不按下,其连接引脚的电平是不一样的,按键检测正是通过检测按键引脚的电平变化来实现的。比如按键未按下时引脚电平为高电平,按键按下后为低电平。我们在检测按键时只需要检测按键引脚是否变为低电平来确定按键是否按下。 二、 硬件 连接 按键的硬件连接决定了我们在配置按键IO时IO的状态。以我们使用的普中核心板为例,上面有三个按键 普中核心板按键硬件电路图 其中K1一端接VCC,另一端接单片机。K2和K3一端接地,另一端接单片机。硬件电路不同,导致他们在进行按键检测时IO的配置不同。 针对K1这种按键电路,按键按下时, 单片机 的引脚接到VCC,因此在未按下的情况下该引脚的默认电平
[单片机]
<font color='red'>STM32</font>速成<font color='red'>笔记</font>(3)—按键检测
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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