盛夏之蝉

个性签名:最近研究STM32,会对库函数的源代码进行解读,会陆续更新

    1. ST单片机免费样品申请 3/4164 stm32/stm8 2015-05-05
      论坛里有申请成功的经验介绍,你可以搜一下看看
    2. STM32F103的固件库给一份吧,亲们 5/2334 stm32/stm8 2015-04-30
      st官网上有最新的
    3. 触发器硬件去抖动
    4. stm32f10x库文件的学习 8/3899 stm32/stm8 2015-04-29
      soso 发表于 2015-4-29 16:51 加油 期待更多分享 嘿嘿
      最近会整理一下笔记,陆续的把各个文件的分析写出来。谢谢支持!
    5. 分享你最近正在读的一本书! 50/7007 聊聊、笑笑、闹闹 2015-04-29
      《莫失莫忘》,每读一遍,不同的心理感受
    6. stm32f10x库文件的学习 8/3899 stm32/stm8 2015-04-29
      本帖最后由 盛夏之蝉 于 2015-4-29 17:42 编辑 ————————————————————————————————————————————————————————————— core_cm3.h ————————————————————————————————————————————————————————————— core_cm3.h文件是和内核紧密相关的功能模块类型封装,有NVIC,SYSTICK,SCB,ITM等,这些模块的内容的具体介绍是在Cortex-M3 权威指南(建议看英文的,我最开始看的是宋岩翻译 的中文版,但是有很多错误和模糊的地方,最后还是看的英文的)里.和我们应用紧密相关的是NVIC,SYSTICK,这篇主要讲解NVIC,SYSTICK。 首先 NVIC: typedef struct {   __IO uint32_t ISER[8];                      /*!< Offset: 0x000  中断使能寄存器 ,写1置位,写0无效*/        uint32_t RESERVED0[24];                                      __IO uint32_t ICER[8];                      /*!< Offset: 0x080  中断 清除使能寄存器,写1清0,写0无效 */        uint32_t RSERVED1[24];                                       __IO uint32_t ISPR[8];                      /*!< Offset: 0x100  中断悬起寄存器          */        uint32_t RESERVED2[24];                                      __IO uint32_t ICPR[8];                      /*!< Offset: 0x180  中断解悬寄存器 */        uint32_t RESERVED3[24];                                      __IO uint32_t IABR[8];                      /*!< Offset: 0x200  中断活动状态寄存器,只读类型,与中断嵌套相关  */        uint32_t RESERVED4[56];                                      __IO uint8_t  IP[240];                      /*!< Offset: 0x300    中断优先级寄存器*/        uint32_t RESERVED5[644];                                    __O  uint32_t STIR;                         /*!< Offset: 0xE00     软件触发中断寄存器     */ }  NVIC_Type 与NVIC相关的库函数有 12个: 1)、static __INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup)                //设置优先级组 {   uint32_t reg_value;   uint32_t PriorityGroupTmp = (PriorityGroup & 0x07);                         /*  优先级组只有3bit位,故可以用的也就0到7这8个级别*/   reg_value  =  SCB->AIRCR;                                                   /* 先读出AIRCR的内容*/   reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk);             /*先清0*/   reg_value  =  (reg_value |  (0x5FA AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos);   } 3)、static __INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)                   //设置外部中断使能 ,代码简练,优美 {   NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 ICER[((uint32_t)(IRQn) >> 5)] = (1 ISPR[(uint32_t)(IRQn) >> 5] & (1 ISPR[((uint32_t)(IRQn) >> 5)] = (1 ICPR[((uint32_t)(IRQn) >> 5)] = (1 IABR[(uint32_t)(IRQn) >> 5] & (1 SHP[((uint32_t)(IRQn) & 0xF)-4 = ((priority > (8 - __NVIC_PRIO_BITS)));  }   else {//中断     return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)]           >> (8 - __NVIC_PRIO_BITS)));  } } 11)、static __INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)     //根据指定的优先级组,对给定的抢占优先级PreemptPriority,子优先级SubPriority 进行编码,组合成一个优先级数字  ,代码很有趣 {   uint32_t PriorityGroupTmp = (PriorityGroup & 0x07);          /*优先级组只有低3位可用*/   uint32_t PreemptPriorityBits;   uint32_t SubPriorityBits;   PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp;   SubPriorityBits     = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS;   return (            ((PreemptPriority & ((1 SubPriorityBits) & ((1 LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;      /*减到0,所以需要减1 */   NVIC_SetPriority (SysTick_IRQn, (1CTRL  = SysTick_CTRL_CLKSOURCE_Msk | //使用FCLOk作为systick的时钟源,,默认是72M                    SysTick_CTRL_TICKINT_Msk   | //到0产生异常                    SysTick_CTRL_ENABLE_Msk;                    /*使能*/   return (0);                                           } ———————————————————————————————————————————————————————— 这些天把st公司给的库源码研究完了,做了相应的笔记,只是有惰性没有写成贴子,以后努力把所有的文件都写成帖子。
    7. 还是矩阵键盘,想自己做个标准键盘~~ 19/5585 Microchip MCU 2015-04-29
      哦,小法 发表于 2015-4-29 08:53 16字节?128位      然后循环128次读到1就存下位数 ? 是这个思路吗
      嗯,使每一个按键都对应一个bit位,比如有键按下就置1,用完清零。组合键的那就同时查询对应位就可以了。
    8. 还是矩阵键盘,想自己做个标准键盘~~ 19/5585 Microchip MCU 2015-04-23
      哦,小法 发表于 2015-4-22 21:26 有8*16 个按键    这么多的按键的组合键要怎么样写
      可以每个按键占用一个bit位,那么组合按键就很容易确定
    9. 还是矩阵键盘,想自己做个标准键盘~~ 19/5585 Microchip MCU 2015-04-22
      使用状态转移法写程序
    10. 枚举变量与宏的应用 7/5339 stm32/stm8 2015-04-19
      学习啦:)
    11. 怎么那么多色情人来加好友 14/3441 为我们提建议&公告 2015-04-17
      {:1_131:}抠脚大汉
    12. datesheet你看懂了吗? 3/6038 模拟与混合信号 2015-04-16
      还是直接看英文的,中文的错误太多了,重要地方很多太模糊,并且中文的受限制于翻译者的技术水平
    13. 啊哈哈 {:1_144:}积极参加,奖品拿来
    14. mark  有时间看看这个
    15. stm32f10x库文件的学习 8/3899 stm32/stm8 2015-04-15
      谢谢啦
    16. 受教了
    17. stm32f10x库文件的学习 8/3899 stm32/stm8 2015-04-14
      现在才看的标题写错了 应该是stm32f10x  多写了个s
    18. stm32初入门问题,求指点,,, 3/1894 stm32/stm8 2015-04-14
      应该在stm32f10x.h中定义的    先用位与&把HES_ON位清零,在用位或置1.但是清零操作是多余的,直接用位或置1就ok了。
    19. 求stm32单片机快速入门方法!!! 12/3841 stm32/stm8 2015-04-12
      读源程序最快
    20. 紧急求助,关于毕业设计,泪奔中 18/3819 51单片机 2015-04-03
      使用C#编写,我2周前刚编了一个简单的上位机界面,命令通过串口传输

最近访客

< 1/1 >

统计信息

已有9人来访过

  • 芯积分:--
  • 好友:4
  • 主题:1
  • 回复:25

留言

你需要登录后才可以留言 登录 | 注册


盛夏知了 2015-4-21
      
盛夏知了 2015-4-17
盛夏之蝉:   
  
查看全部