【STM32F723E-DISCO开发板试用体验】05-BSP例程解析之简介一、简介
在中STM32Cube库中,提供了ST每一款开发板的示例代码,对于STM32F723E-Discovery,在STM32Cube_FW_F7_V1.7.0\Projects\STM32F723E-Discovery\Examples\BSP\目录下提供了一个板级支持包的示例工程,该工程包括了STM32F723E-Discovery板载资源的测试例程,非常好地封装了底层驱动代码。
先来看下BSP工程的结构。
主要的源文件分布在以下4个工程目录中。
Drivers\BSP\STM32F723E-Discovery:和STM32外设接口相关的驱动和功能实现;
Drivers\BSP\Components:驱动芯片的驱动程序;
Examples\User:主函数和Demo例程;
Examples\Utilities:实现LCD显示LOG的功能。
接下来,从main.c开始分析,看看都有哪些Demo。
在main.c中,定义了一个BSP_DemoTypedef类型的结构体数组,BSP_DemoTypedef的定义如下:
所以,BSP_examples数组中的LCD_demo、Touchscreen_demo1等就是指向各个Demo的函数指针,LCD_demo、Touchscreen_demo1等函数分散在各个Demo文件中。
主函数中,首先初始化了MPU,设置了LCD和PSAM的地址保护,然后开启了CPU Cache,接着初始化HAL库和时钟,然后是LED、用户按键和LCD的初始化。触摸屏和音频等驱动的初始化不在主函数中进行,而是在各个Demo函数中进行。
Display_DemoDescription()函数在LCD显示初始界面,提示按键按下会进入的Demo。
在while循环中,检测用户按键是否被按下,如果按键按下,就将索引加1,并执行相应的Demo函数。
二、LED和按键代码解析
首先,从简单的来,先分析LED和按键代码的实现。LED和按键的初始化代码在stm32f723e_discovery.c文件中,该文件包含了STM32F723E-Discovery底层接口的初始化和操作函数的封装。
从原理图可以知道,LED连接在开发板的PA7和PB1引脚上。LED的初始化代码比较简单:
其中用到了一些对IO引脚进行宏定义,代码非常简洁。
除了初始化函数,还实现了操作LED点亮、熄灭和翻转的控制函数:
用户按键的电路图如下,按键连接在开发板的PA0引脚上。
按键的初始化可以根据输入参数选择模式,分为GPIO模式和中断模式,在主函数中使用的是GPIO模式,即轮询分方式。
源码中还实现了一个获取按键状态的函数,可以返回当前连接按键的引脚的电平状态。
三、效果
BSP例程结合了LCD、触摸屏、SRAM、Flash和音频功能,通过User按键实现各个Demo的切换,实际效果如下:
【STM32F723E-DISCO开发板试用体验】05-BSP例程解析之简介一、简介
在中STM32Cube库中,提供了ST每一款开发板的示例代码,对于STM32F723E-Discovery,在STM32Cube_FW_F7_V1.7.0\Projects\STM32F723E-Discovery\Examples\BSP\目录下提供了一个板级支持包的示例工程,该工程包括了STM32F723E-Discovery板载资源的测试例程,非常好地封装了底层驱动代码。
先来看下BSP工程的结构。
主要的源文件分布在以下4个工程目录中。
Drivers\BSP\STM32F723E-Discovery:和STM32外设接口相关的驱动和功能实现;
Drivers\BSP\Components:驱动芯片的驱动程序;
Examples\User:主函数和Demo例程;
Examples\Utilities:实现LCD显示LOG的功能。
接下来,从main.c开始分析,看看都有哪些Demo。
在main.c中,定义了一个BSP_DemoTypedef类型的结构体数组,BSP_DemoTypedef的定义如下:
所以,BSP_examples数组中的LCD_demo、Touchscreen_demo1等就是指向各个Demo的函数指针,LCD_demo、Touchscreen_demo1等函数分散在各个Demo文件中。
主函数中,首先初始化了MPU,设置了LCD和PSAM的地址保护,然后开启了CPU Cache,接着初始化HAL库和时钟,然后是LED、用户按键和LCD的初始化。触摸屏和音频等驱动的初始化不在主函数中进行,而是在各个Demo函数中进行。
Display_DemoDescription()函数在LCD显示初始界面,提示按键按下会进入的Demo。
在while循环中,检测用户按键是否被按下,如果按键按下,就将索引加1,并执行相应的Demo函数。
二、LED和按键代码解析
首先,从简单的来,先分析LED和按键代码的实现。LED和按键的初始化代码在stm32f723e_discovery.c文件中,该文件包含了STM32F723E-Discovery底层接口的初始化和操作函数的封装。
从原理图可以知道,LED连接在开发板的PA7和PB1引脚上。LED的初始化代码比较简单:
其中用到了一些对IO引脚进行宏定义,代码非常简洁。
除了初始化函数,还实现了操作LED点亮、熄灭和翻转的控制函数:
用户按键的电路图如下,按键连接在开发板的PA0引脚上。
按键的初始化可以根据输入参数选择模式,分为GPIO模式和中断模式,在主函数中使用的是GPIO模式,即轮询分方式。
源码中还实现了一个获取按键状态的函数,可以返回当前连接按键的引脚的电平状态。
三、效果
BSP例程结合了LCD、触摸屏、SRAM、Flash和音频功能,通过User按键实现各个Demo的切换,实际效果如下: