在软件调试的时候发现Watch窗口中无法观察局部变量的值,

    总是显示<unavailable>

设置IAR中的

     "Options — 

         c/c++ compiler — 

            Optimization —

               Level" 选项None

全局变量、静态局部变量、局部变量的值都可以看到


HAL库获取系统时钟的函数

sys_wcpclk=HAL_RCC_GetHCLKFreq();


cubeMX

LL(Low Layer) HAL(Hardware Abstraction Layer) APIs


介绍:

  1 new project

     The MCU selector 和 A Board selector




配置步骤(初始化函数)

HAL_SPI_Init()   SPI peripheral configuration

   HAL_SPI_MspInit() 硬件相关的SPI资源配置

               (CLOCK, GPIO, DMA and NVIC)

uncommented 未注释


LED3 等待user button 按下

LED4 on 传输完成

LED6 on 接受完成

LED5 on 传输和接受过程错误 


main.h 更新SPIx instance

            相关的资源根据硬件的使用

复位一个从板,然后在主板上执行才会有一个正确的结果

HAL_Delay()必须要有一个更高的优先级(数字低)

      HAL_NVIC_SetPriority()设置优先级


外围初始化:

  

1 开始一个外围HAL_MPPP_MspInit()功能

   - 使能外围时钟

   - 配置外围GPIOs

   - 配置DMA通道和使能DMA中断(若需要)

   - 使能外围中断(若需要)


2 编辑stm324xx_it.c调用需要的中断函数(外围和DMA),若需要


3  写一个进程完成一个回调功能如果使用者计划使用外围中断和DMA


4 在main.c文件初始化外围处理结构体。然后调用HAL_PPP_Init()初始化外围