工程师应该掌握的STM32单片机关键基础精华

控制/MCU

1843人已加入

描述

  从51开始,单片机玩了很长时间了,有51,PIC,AVR等等,早就想跟潮流玩玩ARM,但一直没有开始,原因-----不知道玩了ARM可以做什么(对我自己而言)。如果为学习而学习,肯定学不好。然后cortex-m3出来了,据说,这东西可以替代单片机,于是马上开始关注。也在第一时间开始学习,可惜一开始就有点站错了队,选错了型(仍是对我自己而言)。我希望这种芯片应该是满大街都是,随便哪里都可以买得到,但我选的第一种显然做不到。为此,大概浪费了一年多时间吧,现在,回到对我来说是正确的道路上来啦,边学边写点东西。

  32位MCU

  这里写的是我的学习的过程,显然,很多时候会是不全面的,不系统的,感悟式的,甚至有时会是错误的,有些做法会是不专业的。那么,为什么我还要写呢?这是一个有趣的问题,它甚至涉及到博客为什么要存在的问题。显然,博客里面的写的东西,其正确性、权威性大多没法和书比,可为什么博客会存在呢?理由很多,我非专家,只说我的感慨。

  我们读武侠小说,总会有一些创出独门功夫的宗师,功夫极高,然后他的弟子则基本上无法超越他。我在想,这位宗师在创造他自己的独门功夫时,必然会有很多的次的曲折、弯路、甚至失败,会浪费他的很多时间,而他教给弟子时,则已去掉了这些曲折和弯路,当然更不会把失败教给弟子,按理说,效率应该更高,可是没用,弟子大都不如师。为什么呢?也许知识本身并不是最重要的,获取知识的过程才是最重要的?也许所谓的知识,并不仅仅是一条条的结论,而是附带着很多说不清道不明的东西?如植物的根,一条主根上必带有大量的小小的触须?

  闲话多了些,就权当前言了。下面准备开始。

  详情参阅:STM32单片机小Tips(1):充分准备与开始编程

  

  勉勉强强看懂一行程序

  继续学习中,先把开发板自带一个例子做了些精简,以免看得吓人。。。。

  就是这个,让PORTD上接的4个LED分别点亮。

  开始研究代码

  int main(void)

  {

  Init_All_Periph();

  。。。。。。

  看到这一行,开始跟踪,于是又看到了下面的内容

  void Init_All_Periph(void)

  {

  RCC_Configuration();

  。。。。。。

  继续跟踪

  void RCC_Configuration(void)

  {

  SystemInit();

  。。。。。。

  这行代码在system_stm32f10x.c中找到了。

  void SystemInit (void)

  {

  /* Reset the RCC clock configuration to the default reset state(for debug purpose) */

  /* Set HSION bit */

  RCC-》CR |= (uint32_t)0x00000001;

  /* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */

  #ifndef STM32F10X_CL

  RCC-》CFGR &= (uint32_t)0xF8FF0000;

  #else

  RCC-》CFGR &= (uint32_t)0xF0FF0000;

  #endif /* STM32F10X_CL */

  /* Reset HSEON, CSSON and PLLON bits */

  RCC-》CR &= (uint32_t)0xFEF6FFFF;

  /* Reset HSEBYP bit */

  RCC-》CR &= (uint32_t)0xFFFBFFFF;

  /* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */

  RCC-》CFGR &= (uint32_t)0xFF80FFFF;

  #ifndef STM32F10X_CL

  /* Disable all interrupts and clear pending bits */

  RCC-》CIR = 0x009F0000;

  #else

  /* Reset PLL2ON and PLL3ON bits */

  RCC-》CR &= (uint32_t)0xEBFFFFFF;

  /* Disable all interrupts and clear pending bits */

  RCC-》CIR = 0x00FF0000;

  /* Reset CFGR2 register */

  RCC-》CFGR2 = 0x00000000;

  #endif /* STM32F10X_CL */

  /* Configure the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers */

  /* Configure the Flash Latency cycles and enable prefetch buffer */

  SetSysClock();

  }

  这一长串的又是什么,如何来用呢?看来,偷懒是不成的了,只能回过头去研究STM32的时钟构成了。

  相当的复杂。

  工程师STM32单片机学习基础手记(2):从勉强看懂一行程序到IO口研究

  STM学习笔记——用定时器实现荧火虫灯

  在第6篇笔记中,我用软件延时的方法实现了荧火虫,学了定时器,当然就要用一用定时器了,这里仍是用荧火虫灯为例。

  用ST库所带的例子Tim中的TimBase为例来修改,这个例子的位置以及如何建立工程请参考第7篇笔记,这里就不再重复了,下面简述一下修改的过程。

  

  (1) 由于我的板子上的灯是由PD8~PD11来控制的,因此,要将

  void RCC_Configuration(void)

  中的:

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //打开GPIOC的时钟

  改为

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); //打开GPIOD的时钟

  (2) 将四个通道全部设置为TIM_OCMode_Toggle模式,即将

  /* Output Compare Timing Mode configuration: Channel1 *

  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Timing;

  改为:

  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle;

  (3)例子中原来中断产生的频率很低,是不适合于做这种荧火虫灯的,但为了比较,我只改了最后一个值:

  详情参阅:工程师STM32单片机学习手记(3):修修改改玩串口

  从51开始,单片机玩了很长时间了,有51,PIC,AVR等等,早就想跟潮流玩玩ARM,但一直没有开始,原因-----不知道玩了ARM可以做什么(对我自己而言)。如果为学习而学习,肯定学不好。然后cortex-m3出来了,据说,这东西可以替代单片机,于是马上开始关注。也在第一时间开始学习,可惜一开始就有点站错了队,选错了型(仍是对我自己而言)。我希望这种芯片应该是满大街都是,随便哪里都可以买得到,但我选的第一种显然做不到。为此,大概浪费了一年多时间吧,现在,回到对我来说是正确的道路上来啦,边学边写点东西。

  32位MCU

  这里写的是我的学习的过程,显然,很多时候会是不全面的,不系统的,感悟式的,甚至有时会是错误的,有些做法会是不专业的。那么,为什么我还要写呢?这是一个有趣的问题,它甚至涉及到博客为什么要存在的问题。显然,博客里面的写的东西,其正确性、权威性大多没法和书比,可为什么博客会存在呢?理由很多,我非专家,只说作为一个学习32位单片机的工程师角度来分享整个学习过程,整理成一个学习手记,也便于以后文档备份。

  详情参阅:STM32学习手记(5):数据的保存与毁灭!

  32位MCU

  STM32单片机小Tips之RTC实践

  BKP还没有搞完,怎么又换到了RTC上了,因为RTC和BKP有些联系,想不关联还不行呢。

  以下是数据手册上有关RTC的介绍:

  ******介绍开始

  15.1 RTC 简介

  实时时钟是一个独立的定时器。RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。

  RTC模块和时钟配置系统(RCC_BDCR寄存器)是在后备区域,即在系统复位或从待机模式唤醒后RTC的设置和时间维持不变。

  详情参阅:STM32单片机小Tips(6):玩转IAR,开发STM32

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
elecfans网友 2013-05-25
0 回复 举报
灌灌灌灌 收起回复
傻傻小朋 2013-05-16
0 回复 举报
有点高深,对于初学者来讲,难了,我就没看懂,哈· 收起回复
全部评论

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分