donatello
获得 765 次赞
帮助过2489人
【stm32f412-disco 开发板试用体验】使用cubemx生成hal库串口通信程序 万物皆从点灯和串口开始,我更偏向于从串口外设开始试用评估一块开发板,因为串口可以显示几乎所有信息。 从开发板的电路图我们可以看出,虚拟串口挂载在f412mcu的pa2和pa3(即串口2)处,因此这里我们可以直接用cubemx来生成串口通信的程序。首先使能串口2为异步串口,并使能pa2和pa3引脚。
由于f412disco开发板推出的历史尚不是很久远,因此要在最新的cube_f4_1.16版本中找到相应的官方例程。在st.com官网中可以搜索"cubef4"找到相应的官方例程,但是鉴于官方下载例程包非常麻烦,又是要帐号又是要邮箱接收邮件,因此我直接就把例程包发到网盘里了,大家可以直接下载,方便你我他。 http://pan.baidu.com/s/1slprnzb
收到云汉家的f412disco很久了,无奈最近一直有事,没有及时更新试用帖,现在开始我将连续几天都会更新试用帖。
本帖最后由 donatello 于 2017-4-19 13:52 编辑 这几天在捣鼓板子的几个串口,但是发现了不少问题,首先就是官方自带的串口打印helloword例程是有问题的,虚拟串口本应该是串口0,而官方例程上面却指定为串口4,并且,就算直接烧录官方例程,串口4也没输出,这就非常尴尬了。我阅读开发板的电路图之后,发现cn11引脚组就是串口4,可是,我在cn11引脚组接上usb转ttl模块,并在程序中使能串口4发送,同样也没输出,原因未知,但是我认为,既然官方预留了串口4的引脚组,一定有办法可以使用串口4发送数据的,可能只是我没发现怎么发送而已,我会在以后的试用中慢慢摸索。
既然这段时间都在弄彩屏,那么除了显示彩图以外,还有一个非常重要的环节就是显示各种字符了。显示字符的难度相比于显示全屏的彩屏来说相对简单一点,因为不需要做像素点rgb解码,我们显示字符点阵通常都是遵循二进制原则——0显示背景,1显示字体,只需要背景色和字体色两个不同的参数即可。 取字模软件我用的是pctolcd2002。
时隔两个月,我重新发布恩智浦maps开发套件的使用报告。这次报告的主要内容是将初步整理好的官方例程分享到论坛里。整理工程耗时两个晚上。 由于官方例程的各个demo的工程文件是与器件库工程所编译的lib文件直接挂钩的,因此demo的工程文件和lib文件是不能移位的,一旦移位,工程就会报错说找不到lib文件。工程文件的路径为..demosflexbus_lcduv4mapsk64,谨记!不能移位!lib文件的路径为..libksdk_platform_libuv4k64f12debug,谨记!不能移位!
前几天根据坛友的例程,我调通了基于hal库的l3gd20陀螺仪实验。 先来介绍一下l3gd20,据说该陀螺仪在目前的智能手机上广泛使用,既然广泛使用,那肯定有它自身的优点,我能想到的优点就是封装体积小(这个必须的),成本低(这个可能不一定),灵敏度高(这个看情况)。l3gd20与单片机通信的总线是全双工spi总线+软件片选(即硬件片选脚不启用,而是用另一个gpio来控制片选),另外,还有两个中断控制引脚int1和int2,在本程序中未启用。l3gd20能采集三个轴的加速度,分别是左右(x轴),前后(y轴),自转(z轴),因此能检测板子是平放,向左倾斜,向右倾斜,向前倾斜,向后倾斜或是顺逆时针转动。 初始化l3gd20,首先要初始化板子的spi5接口(pf7~pf9),然后就是对里面的寄存器进行读写操作了。对寄存器的读写要严格遵循spi总线访问寄存器的时序,读寄存器的时序为片选拉低——发送八位地址(第一位一定要置1,即adr&0x80)——发送八位数据的同时接收八位返回数据——延迟10微秒——片选拉高; 而写寄存器的时序为片选拉低————发送八位地址(第一位一定要置1,即adr&0x80)——发送八位数据——延迟10微秒——片选拉高。 首先肯定是读取器件的id寄存器(地址为0x0f),若寄存器的值为0xd4,即说明器件id读取正确,可以进行初始化内部寄存器的操作了。第一个要初始化的寄存器是ctrl_reg1寄存器(地址为0x20),根据表格可得要填入的值为0x3f;然后是设置精度的ctrl_reg4寄存器(地址为0x23),精度默认为250的话,要填入的值为0x00;然后是ctrl_reg2寄存器(地址为0x21),要填入的值也为0x00;最后是启动选项的ctrl_reg5寄存器(地址为0x24),要填入的值为0x10。
这几天实现了f429探索者与蓝牙通信,初步调通了串口3使之作为蓝牙透传接口,为之后的f429控制蓝牙小车的实验打下基础。 我所使用的蓝牙模块为两个hc05主从一体机模块,hc05的重要特点就是主从一体,因此两个模块在蓝牙数据透传中的地位是相同的,即不分主从,但是我为了方便区分,还是给两个模块分别贴了“主机”和“从机”的纸条。