上位机图像处理和嵌入式模块部署(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、按键函数修改

        实际按键测试的时候,发现key1有效果,但是key2没有效果,判断需要对key2进行修改,

	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;

        同时对Key_Scan函数进行修改,

if(GPIO_Pin == KEY1_PIN || GPIO_Pin == KEY2_PIN || GPIO_Pin == KEY3_PIN)
{
    /*...*/
}

10、总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式-老费

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值