自己项目F2芯片,特来回馈原子哥和论坛

2019-10-15 18:00发布

本帖最后由 bruellyyang 于 2016-9-16 11:00 编辑

先介绍背景,自己有原子mini板,老师还有战舰版,大概学过一些,了解一些简单的外设,之前没有做过项目,C语言也不过关。中间半年多没有接触这些,工作之后基本上是从零开始。项目使用芯片是f205,这个芯片感觉用的人不是很多,但是工作上的要求,没有办法,硬着头皮上,在自己操作这个片子的时候遇到的问题及注意事项一一奉上,本人材学疏浅,如浪费大家时间还请包涵。

公司开发人员使用的iar,我喜欢keil。自己装了软件,建立工程就遇到问题,第一次到st官网找f2固件库,发现里面没有内核.c文件,但是iar的工程下面有,折腾了些时间还是相信st。

首先实现的是2*2矩阵按键。自己所有的参考都是以mini板为主,后来发现f2的gpio初始化和1系列的片子都不太一样;应该是st从2系列开始就升级了,2和4相似很多,开发2系列的不懂可以多参考参考4系列原子哥的例程。我矩阵按键参考的是http://www.openedv.com/forum.php ... 8%D5%F3%B0%B4%BC%FC 自己的理解是: IO初始化可以不上下拉,外部拉为高电平,然后挨个管脚设置低,当按键按下的时候检测到低电平的时候,就是哪个按键了,不知道理解的对不对;理解不对的地方还请高手指教。

项目中需要一个编码器,是用手旋转的那种,可以顺时针、逆时针旋转,还可以按下。关于编码器,如果要使用芯片的编码器模式,就需要在硬件上先接好,具有编码器模式的是普通定时器的CH1、CH2和高级定时器,不管哪个定时器推荐使用ch1、ch2,有些硬件看着没问题,但是软件实现一直出问题,而且很难找,我就是被硬件坑了无数次;当然高手可以无视。编码器的资料论坛里有大神写的很详细,可以仔细参考。

串口,应该是很通用的了;项目中串口主要实现与迪文屏的通信问题,相对比较简单,但是对于一个什么都不会的人来说,遇到的任何小问题都不是小问题。还是那句话,确保硬件没问题再做软件,在过程中如果感觉软件没问题,但是结果就是不对,那就仔细检查硬件,我的板子由于虚焊,折腾好几天,最后找别人帮忙找出问题了。串口接收数据都是通过串口接收中断实现,可以将数据直接保存数组中,这样cpu就可以直接处理数据了,之前一直不懂,想的是将串口收到的数据通过dma传输到内核,还在论坛各种求助,也谢谢原子哥和坛友的解答。以后有机会再尝试使用dma。串口中断是一个字节一个字节接收的,每个字节后都以结束,所以可以根据这个判断你接收完成没有。

spi,也是很常用的。我板子上3个spi都用到了。spi的初始化和4系列的片子差不多,在调试的时候,领导让我将片选设置成spi模式,说我用io口实现的根本不对,为此还跟他扯皮了下。后来在网上查片选设置成spi模式根本就不稳定,会出很多问题。我想这也是原子哥和很多大神都不使用硬件的原因吧。spi3有一些特殊之处,因为spi3和jtag的一些管脚是一起的,所以如果想要在线仿真的话,spi3肯定不行,需要复用到其他引脚。但是如果用的是sw模式,那就正常使用,一样很6666 。我spi1连接的是eeprom,spi2控制另一个板子,spi3实现网口的控制。

前几天刚把网口实现,用的芯片是w5100,不得说这个芯片比原子哥开发板上使用的简单,也不需要移植那么多代码。我也在这个芯片上花费了很多时间,问题解决到最后发现又是硬件的问题,同事做的电路板有问题,还天天说我行不行啊,简直了,在此发个牢骚,不喜勿喷。如果有使用w5100、w5200、w5500啥的,可以跟帖交流。

最后在说下,下面要做的是USB,实现功能是串口,期待顺利,有问题我会随时记录在贴子里的,还希望各路大侠看到能指点一二,在下不尽感激。

基本上写了自己从一个很菜很菜的鸟,变成菜鸟的过程;中间经历的很多细节有些回想不起来了,以后想起慢慢补上。如果有技术类的交流欢迎跟贴,这是一个开源的平台,感谢原子哥,我问了很多白痴的问题,原子哥也亲自解答了;也感谢坛友的分享和解答,正值中秋,草草发这个贴子略表对原子哥和论坛的感谢,俗话说:爱出者爱返,福往者福来;原子哥的这个论坛帮助了很多人,希望论坛越来越好。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
bruellyyang
1楼-- · 2019-10-16 14:45
 精彩回答 2  元偷偷看……
bruellyyang
2楼-- · 2019-10-16 16:43
w5100部分代码,我用的是client tcp模式
[mw_shl_code=c,true]void W5100_Socket_Set(void)
{
  if(S0_State==0)//¶Ë¿ú03õê¼»ˉÅäÖÃ
  {
    if(S0_Mode==TCP_SERVER)//TCP·tÎñÆ÷Ä£ê½
    {
                        if(Socket_Listen(0)==TRUE)
                                S0_State=S_INIT;      //3õê¼»ˉíê3é
                        else
                                S0_State=0;
    }
    else if(S0_Mode==TCP_CLIENT)//TCP¿í»§¶ËÄ£ê½
    {
                        if(Socket_Connect(0)==TRUE)
                                S0_State=S_INIT;
                        else
                                S0_State=0;
    }
    else//UDPÄ£ê½
    {
        //if(Socket_UDP(0)==TRUE)
                //S0_State=S_INIT|S_CONN;
        //else
                //S0_State=0;
    }
  }
}[/mw_shl_code]
bruellyyang
3楼-- · 2019-10-16 19:38
代码有点乱,传上来更乱。我做的是程控电流分析仪的控制板部分,有需要的可以回帖,需要哪部分我贴代码上来
bruellyyang
4楼-- · 2019-10-16 22:13
本帖最后由 bruellyyang 于 2016-12-23 15:04 编辑

现在想尝试用spi的dma传输,如果我要接收miso上的数据,而stm32的spi设置成主。

bruellyyang
5楼-- · 2019-10-16 22:53
代码写的不好,精简了下穿上来,有需要的可以看下互相交流

一周热门 更多>