上位机图像处理和嵌入式模块部署(f407 mcu开发板基本测试)

本文主要是介绍上位机图像处理和嵌入式模块部署(f407 mcu开发板基本测试),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        我们拿到一个新的开发板之后,一般都需要测试一下基本功能。这里面一部分功能是我们比较熟悉的,比如说led、key输入、串口、定时器中断、看门狗等等,还有一些可能是新的开发板自带的,比如spi、tf卡、eth网口等等。所以一开始拿到板子的时候,我们就要做一些准备,有软件的准备,有硬件的准备,我们来简单梳理下。

1、下载f407 pack包

        之前我们学习了103核心板,所以安装了keil和103的pack包。这里我们继续学习407,所以同样需要安装407的pack包。这部分甚至可以在没有拿到板子之前,就提前安装下。

2、和商家沟通好具体资料和代码的下载地址

        目前电商网站上面,一般商家都会给出相关开发板的资料,有芯片手册,有电路图,有源代码。只要我们出示了相关的购买记录,这部分资料还是很容易拿到的。

3、使用j-link仿真器

        之前我们一直使用st-link v2下载和调试代码,每次下载之前都需要erase,感觉有点麻烦。所以这次选用了j-link进行仿真、烧录。实际使用下来,速度还是非常快的,最关键一点不需要每次烧录之前erase一下。此外407的flash要比103大很多,真的要erase的话,时间还是蛮久的。

4、编译好商家的代码

        一般拿到代码之后,第一步,先保证能够正确地把商家给出的代码编译出来。不然没有办法进行后面的工作。因为这个板子是朋友开发的,所以有什么问题,可以直接咨询朋友。大家如果是电商网站上开发的,有什么编译问题,其实也可以咨询商家的。

5、安装好环境

        拿到板子之后,就需要开始硬件接线了。一般除了开发板和j-link之外,我们还需要准备usb转232模块、usb hub、tf卡、网线和type c 连线。其他问题不大,但是232串口和j-link的连线比较容易接错。串口基本就是收、发、地,对应开发板的引脚即可。j-link麻烦一点,需要找到带缺口的第一排的6、7、10,以及第二排的6,对应的信号分别是clk、dio、3.3v、gnd。

        其中j-link是自带电源3.3v的,所以烧录的时候不再依靠type c接口提供电源。

6、串口软件

        测试用例中,有一部分串口打印是中文,有点麻烦,用mobaxterm不太好显示。这里直接借用了某原子的ATK-XCOM软件,可以正常显示中文。

7、烧入第一个按键检测的代码

        这个case比较简单,主要就是看按键按下去的时候,led灯有没有关闭和熄灭。默认demo代码是led闪烁的效果。通过j-link工具和keil load按钮下载之后,发现没有效果。初步认为是开发板没有reset,那就重新烧录一下,结果发现依然没有效果。经过排查,发现是电路图的pin脚和demo不匹配,修改一下,

#define LED1_PIN                  GPIO_Pin_3               
#define LED1_GPIO_PORT            GPIOC                      
#define LED1_GPIO_CLK             RCC_AHB1Periph_GPIOC

        重新编译烧录,发现led开始常亮,但是没有闪烁的效果,观察发现是延时过短的原因造成的。之前的30000调整为3000000,

	while(1)                            {	   GPIO_SetBits(LED1_GPIO_PORT,LED1_PIN);Key_Delay(3000000);GPIO_ResetBits(LED1_GPIO_PORT,LED1_PIN);Key_Delay(3000000);}

        led闪烁没有问题了,下面开始测试按键。这个时候需要把Delay相关代码注释掉。首先测试key1,重新编译烧录后,一切正常。

    while(1){if( Key_Scan(KEY1_GPIO_PORT,KEY1_PIN) == KEY_ON  ){LED1_TOGGLE;} }

        继续测试key2,因为整个开发板只有电源灯和led,所以依然用key2控制led1,

    while(1){if( Key_Scan(KEY2_GPIO_PORT,KEY2_PIN) == KEY_ON  ){LED1_TOGGLE;}   }

        这次发现,没有效果。我们先排查引脚对不对,和之前的电路图对比一下,

        发现demo代码中的code和pa0、pc13是对的上的。进一步发现,确认pc13的mode设置错误,需要配置成这样,

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;

        修改下,重新编译、烧录之后,发现现在也可以用key2控制led灯了。

8、串口调试

        弄清楚了按键检测的代码之后,接下来可以找一个串口的demo。正好作者给出的代码包里面有这样的示例代码。不妨打开一个uart1控制led1的项目。首先,还是需要把接线部分都接上。因为涉及到一个usb转232的串口,而本身pc电脑的usb并不多,所以最好加一个usb hub转接一下,稍微麻烦点。不过,由于作者设计电路的时候,把swd和tx/rx/gnd放在了一起,整体使用还是比较方便的,

        其次还是led灯的问题,需要修改成pc3。编译烧录后,我们打开上面介绍的ATK-XCOM软件。配置好基本的波特率信息,一般就是115200,复位之后就可以看到相关打印了,

        如果输入1,led亮;输入4,led灭。其他led灯没有效果。至此,407板子的基本功能调好了。后续spi、tf卡、eth还有待进一步调试。

9、总结

        整个示例代码使用的是库函数版本,实际使用和hal差别不大,当然和寄存器版本相比较,肯定好用很多。大家实际使用中可以根据自己的情况灵活做选择。

这篇关于上位机图像处理和嵌入式模块部署(f407 mcu开发板基本测试)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1023469

相关文章

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Nginx添加内置模块过程

《Nginx添加内置模块过程》文章指导如何检查并添加Nginx的with-http_gzip_static模块:确认该模块未默认安装后,需下载同版本源码重新编译,备份替换原有二进制文件,最后重启服务验... 目录1、查看Nginx已编辑的模块2、Nginx官网查看内置模块3、停止Nginx服务4、Nginx