打印
[应用相关]

STM32 MCUs 技术知识点合集

[复制链接]
250|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
0 摘记
   0.1 SMPS(开关电源)提供电源
        选择MCU时一定要注意是否支持SMPS 电源供应,因为同型号同封装的MCU,支持SMPS和不支持的 PIN map有细微差,不完全兼容
   0.2 各mcu datasheet的 ordering information 都有详细选型代码,标明是否支持SMPS
   0.3 大部分同封装同pin数的mcu基本满足pin对pin兼容(GPIO,io复用功能或有不同),但要 注意SMPS支持与否。
       0.3.1 比如 同pin数LQPF封装的stm32f10xx stm32f4xx  stm32L4x1~x6 ,R5/7, S5/7 基本都兼容,
               但是R9和S9 因为支持camera就与前者有些许不兼容的地方。
       0.3.2 这仅是对gpio而言,复用功能和特定功能没有考虑在列。
   0.4 stm 系列的mcu , BOOT1 一般都是 PB2
   0.5 NVIC 和 SCB 的教程 atk的 《StM32F429 FreeRTOS 开发手册》 的4.1 章节
       0.5.1 STM32 家族的MCU,  抢占优先级+次级优先级 合并 设定占  4bit
               查询文件  stm32xxxx.h   //  xxxxx---> mcu具体型号   



使用特权

评论回复
沙发
wang6623|  楼主 | 2023-7-31 16:11 | 只看该作者
0.5.2 不同厂商的 mcu,NVIC  抢占优先级+ 次级优先级  自我设定
   0.6 __MPU : 内存保护单元
   0.7 自设文件,自定义项解析
       0.7.1  global_def.h :          定义供所有mcu,所有项目使用公共宏
                 bsp_glbtree_xxx.h : 定义仅供指定开发平台使用的公共宏,如 _pdra,表示这些宏仅供Pandora 开发平台使用
                 mcu_sys_head.h   :设置仅供本项目使用到的头文件 ,设备和变量等
         0.7.2   BSP_BD_xx   : 一般针对 开发平台 on board 板载的项
                  BSP_EX_xx :       一般针对  开发平台 outside  board  板外扩展的
                  BSP_xxx_xC:     核心板板载
                   BSP_xxx_xM:    底板主板板载
                  MCU_xx      :     针对 MCU内部设备
        0.7.3 GPIO文件
               0.7.3.1 MCU_GPIO  MCU各接口模块的gpio配置api
        0.7.4
   0.8 关于 M4和M4F
         第三方厂商会根据自己的产品线增加或裁剪 arm 给定的 cortex m核 内模组
         带FPU(浮点数运算单元) 的 是 M4F; 不带的是 M4
         当然这并不是严格规定的,stm带fpu 的 mcu ,有的资料标注是M4 ,有些则标注的是M4F
   0.9  关于编译工具的宏定义
       0.9.1  __CC_ARM   ---> ARM Realview MDK
       0.9.2  __ICCARM__ ---> IAR EWARM
       0.9.3  __GNUN__    --->  GNU Compiler Collection
   0.10  stm32xxxx.h(如stm32l4xx.h#237) 的   #define  POSITION_VAL(VAL)     (__CLZ(__RBIT(VAL)))
                   http://www.openedv.com/thread-94750-1-1.html
       0.10.1   POSITION_VAL ---》获取VAL值的最高位位数
       0.10.2  
   0.11 如果使用了 rtos,尽量不要频繁反复触发mcu的硬件中断(红外遥控就依赖硬件定时器的中断去扫描接收器,捕获信号)
   0.12

使用特权

评论回复
板凳
wang6623|  楼主 | 2023-7-31 16:11 | 只看该作者
1  SysTick 时钟配置,基于HAL库 :xxxx_hal_cortex.c
  1.0  HAL_Init()执行时就执行使能了 systick时钟的程序,并装载了一个默认值,一直反复循环倒计时。
        具体是 core_cm4.h中的内部api :SysTick_Config()

使用特权

评论回复
地板
wang6623|  楼主 | 2023-7-31 16:12 | 只看该作者
  1.1 Systick底层寄存器结构体(core_cmx.h)

使用特权

评论回复
5
wang6623|  楼主 | 2023-7-31 16:13 | 只看该作者
下图是野火《零死角玩转stm32》p152; 要注意的是《cortex-m3权威指南》p134页截取 ,  该资料systick控制及状态寄存器的bit2的解释有误

使用特权

评论回复
6
wang6623|  楼主 | 2023-7-31 16:21 | 只看该作者
1.2 时钟
    1.2.0 来源
            SysTick的时钟<----HCLK or HCLK/8<-----AHB<-----SYSCLK(mcu主频)
    1.2.1 时钟选择 api (xxxx_hal_cortex.c)选择全频HCLK或者HCLK/8

使用特权

评论回复
7
wang6623|  楼主 | 2023-7-31 16:21 | 只看该作者
  1.2.2 参数 (xxxx_hal_cortex.h

使用特权

评论回复
8
wang6623|  楼主 | 2023-7-31 16:22 | 只看该作者
1.2.3 说明
           SysTick->CTRL 的bit2 决定systick的时钟源来自哪里
           1.2.3.1  HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
                      表示取stm32 的HCLK (stm32f429的HCLK)
           1.2.3.2 HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK_DIV8);     
                      表示取stm32 的HCLK/8  (HCLK是72MHz,systick的时钟就是9MHz)
     1.2.4 注意, stm32中文参考手册_v10.pdf p56 时钟树对systick的时钟源解释的有误,
     
      
  1.3 底层systick产生中断的 时基 api:SysTick_Config(uint32_t ticks)的使用。(core_cmx.h)
      

使用特权

评论回复
9
wang6623|  楼主 | 2023-7-31 16:23 | 只看该作者
    该api 默认使用的是mcu主频时钟,并开启了systick中断服务

       以stm32f429,180MHz主频为例,systick->val 减小1,耗时 1/180 us
       如果要设置1us的中断时基,那么形参 ticks = 180;SysTick_Config(180) 就等于每1us产生一次中断
       如果要设置1ms的中断时基,那么形参 ticks = 180000;SysTick_Config(180000) 就等于每1ms产生一次中断

使用特权

评论回复
10
wang6623|  楼主 | 2023-7-31 16:23 | 只看该作者
2  stm32的启动模式(以stm32f429为例)
   2.0 信息
      2.0.1  参考资料《野火零死角玩转stm32f429》 p1002 第52章节
      2.0.2  网站  https://mp.weixin.qq.com/s?src=11×tamp=1572844092&ver=1953&signature=2oUDILilsbVFfZY2cM*wu2Ma93S674J92oxTPY5TthsdYsUeUHrdfEhaozVoHzohhM-RkVKnUNAbFpV8JurB15NQvC8mzOGjzfuPPvVekzTMR6NFikIx5lyNtqxffsVX&new=1

使用特权

评论回复
11
wang6623|  楼主 | 2023-7-31 16:24 | 只看该作者
  2.1 基本知识
      2.1.1 图解

使用特权

评论回复
12
wang6623|  楼主 | 2023-7-31 16:24 | 只看该作者
      2.1.2 用户闪存启动,就是从mcu的内部flash启动,这是最常用的方式
      2.1.3 系统存储器 启动 boot0/1 = (1,0)常用于 串口下载

使用特权

评论回复
13
wang6623|  楼主 | 2023-7-31 16:25 | 只看该作者
     注意! F429的mcu不要使用这个软件下载
             下载完程序后 把 boot0/1 调整到(0,x),然后按复位键,程序才启动
      2.1.4 从mcu内嵌sram启动,一般用于调试
   2.2  
3 中断系统
   3.1  前述
       3.1.1  web
               https://blog.csdn.net/qq_38410730/article/details/79829983
               https://blog.csdn.net/wuyuzun/article/details/72783152
              http://blog.sina.com.cn/s/blog_b1ed84120101fmlq.html
       3.1.2
   3.2 NVIC
       3.2.0  前述
            3.2.0.1   armv7-m 抢占优先级+次级优先级 设置位宽 最高 是  8bit
                        但是 STM32 MCUs,  抢占优先级+次级优先级 设置位宽是   4bit
                           查询文件   stm32xxxx.h   //  xxxxx---> mcu具体型号   

使用特权

评论回复
14
wang6623|  楼主 | 2023-7-31 16:27 | 只看该作者


        3.2.0.2   armv7-m 最多可以设置 8个 nvic group;
                        但是 stm32 mcu 只有 4 个 NVIC_PRIORITYGROUP,
                        NVIC_PRIORITYGROUP_ x  由  SCB->AIRCR[10:8]  决定;
       3.2.1  三要素:组 NVIC_PRIORITYGROUP_x;          抢占优先级 ;        响应优先级(次级优先级)  
                             NVIC_PRIORITYGROUP_0                        0                      0~15
                             NVIC_PRIORITYGROUP_1                       0,1                     0~7
                             NVIC_PRIORITYGROUP_2                       0~3                     0~3
                             NVIC_PRIORITYGROUP_3                       0~7                     0,1
                             NVIC_PRIORITYGROUP_4                       0~15                  0
            优先顺序       0 > 1 …> 4                                    0 > 1 …> 15              0 > 1 …> 15

使用特权

评论回复
15
wang6623|  楼主 | 2023-7-31 16:28 | 只看该作者

使用特权

评论回复
16
wang6623|  楼主 | 2023-7-31 16:31 | 只看该作者
      3.2.2 原则:
           3.2.2.1 对于多cortexm核心的 stm32 mcu而言,组最优先,高组可以抢低阻;
           3.2.2.2 同组高抢占可以抢占低抢占(可嵌套);同组同抢占级,高响应的先执行,低的后执行,
           3.2.2.3 高响应级 不能抢占低响应(不可嵌套),要等待上一个执行完毕才可执行。
      3.2.3  对于加入了FreeRTOS的pjt 而言,NVIC group 只能设置为  NVIC_PRIORITYGROUP_4
   3.3
4 SCB :System Control Block
   4.1 前述
        4.1.1  相关定义所在文件  core_cmx.h   

使用特权

评论回复
17
wang6623|  楼主 | 2023-7-31 16:31 | 只看该作者

使用特权

评论回复
18
wang6623|  楼主 | 2023-7-31 16:31 | 只看该作者

使用特权

评论回复
19
wang6623|  楼主 | 2023-7-31 16:31 | 只看该作者


           对  SCB->AIRCR  或  0x05fa0004  将会 强行复位 MCU
        4.1.2  
        4.1.3
   4.2
5

使用特权

评论回复
20
公羊子丹| | 2023-12-29 07:25 | 只看该作者

但是,由于变压器存在漏感,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

55

主题

390

帖子

0

粉丝