上位机图像处理和嵌入式模块部署(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

相关文章

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Python sys模块的使用及说明

《Pythonsys模块的使用及说明》Pythonsys模块是核心工具,用于解释器交互与运行时控制,涵盖命令行参数处理、路径修改、强制退出、I/O重定向、系统信息获取等功能,适用于脚本开发与调试,需... 目录python sys 模块详解常用功能与代码示例获取命令行参数修改模块搜索路径强制退出程序标准输入

Python pickle模块的使用指南

《Pythonpickle模块的使用指南》Pythonpickle模块用于对象序列化与反序列化,支持dump/load方法及自定义类,需注意安全风险,建议在受控环境中使用,适用于模型持久化、缓存及跨... 目录python pickle 模块详解基本序列化与反序列化直接序列化为字节流自定义对象的序列化安全注

Java Instrumentation从概念到基本用法详解

《JavaInstrumentation从概念到基本用法详解》JavaInstrumentation是java.lang.instrument包提供的API,允许开发者在类被JVM加载时对其进行修改... 目录一、什么是 Java Instrumentation主要用途二、核心概念1. Java Agent

python pymodbus模块的具体使用

《pythonpymodbus模块的具体使用》pymodbus是一个Python实现的Modbus协议库,支持TCP和RTU通信模式,支持读写线圈、离散输入、保持寄存器等数据类型,具有一定的参考价值... 目录一、详解1、 基础概念2、核心功能3、安装与设置4、使用示例5、 高级特性6、注意事项二、代码示例

linux部署NFS和autofs自动挂载实现过程

《linux部署NFS和autofs自动挂载实现过程》文章介绍了NFS(网络文件系统)和Autofs的原理与配置,NFS通过RPC实现跨系统文件共享,需配置/etc/exports和nfs.conf,... 目录(一)NFS1. 什么是NFS2.NFS守护进程3.RPC服务4. 原理5. 部署5.1安装NF

Kotlin 协程之Channel的概念和基本使用详解

《Kotlin协程之Channel的概念和基本使用详解》文章介绍协程在复杂场景中使用Channel进行数据传递与控制,涵盖创建参数、缓冲策略、操作方式及异常处理,适用于持续数据流、多协程协作等,需注... 目录前言launch / async 适合的场景Channel 的概念和基本使用概念Channel 的

Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧

《Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧》本文将通过实际代码示例,深入讲解Python函数的基本用法、返回值特性、全局变量修改以及异常处理技巧,感兴趣的朋友跟随小编一起看看... 目录一、python函数定义与调用1.1 基本函数定义1.2 函数调用二、函数返回值详解2.1 有返

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

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