![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STM32
文章平均质量分 92
ArthurZheng150
这个作者很懒,什么都没留下…
展开
-
STM32 HAL库 硬件I2C 从机主机防BUG程序
前言最近死磕了5天的STM32F1硬件I2C从机的程序,天天早上8点到凌晨,几乎全程心流状态。终于在结合各方资料即自己的思考后,做出了稳定的硬件I2C代码(这个文章中应该是目前为止能查到的最详述可用的硬件I2C代码),经过各种奇怪的I2C主机型号的蹂躏后,通讯都可以恢复正常,不会被卡死。证明该方案拥有极高稳定性。需要注意我这次使用的是 STM32F103C8T6 的兼容型号 GD32F103C8T6 。要问他的兼容性有多强,连I2C bug都能做到一样,哈哈。我当初用GD想着硬件I2C应该能舒服用了,万原创 2020-05-24 02:23:31 · 12482 阅读 · 6 评论 -
STM32高级开发(15)-使用eclipse开发STM32
我刚刚接触linux上单片机的开发,最喜欢的就是 eclipse + arm-plug-in + arm-none-eabi 的开发环境,,然而那是由于对eclipse亦或是makefile等编译过程中的工具的不甚了解,很多时候会遇到一些错误无法解,直到最近我再一次的尝试了eclipse开发环境的搭建和使用,我才很顺利的完成了程序的配置,现在也把这个方法推荐给大家。原创 2017-02-23 13:46:48 · 13183 阅读 · 12 评论 -
STM32高级开发(7)-浅析样例工程的Makefile
上一篇中我们为大家介绍了makefile的最简单的用法和关于它的学习资料,本篇建立在大家已经稍许看过makefile的教程上,结合我们的 arm 工具链来具体分析上一篇中makefile的配置和作用。原创 2017-01-31 19:13:14 · 7617 阅读 · 9 评论 -
STM32高级开发(16)-CMSIS DAP调试工程
最近公司的项目在等供应商的设备有点空闲的时间了,就折腾了下ARM官方开源的CMSIS DAP调试器的方案,用的是X893大神的方案,主要写的是再Ubuntu使用 CMSIS DAP调试的方法原创 2017-10-14 09:57:57 · 12318 阅读 · 3 评论 -
STM32高级开发(14)-使用CubeMX生成STM32工程
在我们了解libopencm3的使用后,发现libopencm3只适用于小型工程,其最大的特色只是在USB方面的使用方便,那么在我们配置大型工程的时候有没有一种更快捷的方式呢,显然是有的。它就是CubeMX,ST官方出的神器,可以使得我们像配置FPGA一样配置STM32的功能。CubeMX早期是运行在windows下的,但由于是Java写成的它也可以同样的运行在Linux环境中。原创 2017-02-22 19:27:26 · 7398 阅读 · 9 评论 -
STM32高级开发(5)-gcc-arm-none-eabi
在完成对ubuntu的基本操作和指令的学习后,我们下面正式的进入有关于我们stm32/ARM单片机的软件安装过程。首先我们就要介绍这个会贯穿我们整个开发过程中的软件gcc-arm-none-eabi。gcc-arm-none-eabi是什么最直接的当我说出这个软件的时候,大部分童鞋可能会奇怪他到底是个什么呢?首先他是个软件这就不用多说了,做什么的软件呢?编译软件,或是准确点叫工具链...原创 2017-01-30 18:58:17 · 67348 阅读 · 9 评论 -
STM32高级开发(17)-使用DFU方案
STM32 DFU 快速移植及使用教程什么是 DFUDFU全程为Device Firmware update,是ST官方推出的一个通过USB接口进行IAP升级的方案,包括单片机DFU Demo代码以及PC端升级程序及其Demo代码。通过使用DFU方案,我们可以快速的集成升级功能到开发的产品中,同时还能够快速的开发与之配套的升级程序。原创 2017-12-13 11:50:41 · 16648 阅读 · 2 评论 -
STM32高级开发(18)-使用VS Code搭建STM32开发环境
以前在伴随着开发平台的转换中,我尝试过各种各样的开发环境,而在最近一段时间的开发中我使用了Visual Studio Code来作为代码编辑器,其优异的工程管理,超快的启动速度,各种各样功能强大的插件,使我立刻爱上了这个文本编辑器。但是在开发中来来回回在编辑器和Keil等IDE之间来回切换对我造成了不少不方便,另外由于希望能够在windows下使用gcc工具链开发,所以我尝试使用插件来完整的在vs原创 2018-01-17 22:11:22 · 58257 阅读 · 20 评论 -
嵌入式自动化单元测试(1)-简要介绍
单元测试,是指对软件代码中的最小模块进行检验和验证,这一方法在如今的高级语言工程项目开发中拥有很重要的地位。就目前的大环境来说,单元测试更多被提及和应用的领域是在C++、Java等高级语言项目开发的PC或服务器等平台的软件工程中,而在嵌入式领域,国内几乎没有可查的资料,偶尔的一两篇或者是草草说明,或者是简短的转载纯粹外文的资料。我曾一度怀疑是否有应用在嵌入式单片机或处理器领域中的单元测试方法...原创 2018-03-08 15:29:32 · 5775 阅读 · 1 评论 -
STM32高级开发(4)-ubuntu的简介和命令
在也许大家历经了诸多困难终于安装并设置好了系统平台。但是在新的系统下两眼一抹黑,不知道怎么用,我们接下来便来介绍一些ubuntu的基础特性、操作和终端的基础指令,来为接下来的编程开发做好铺垫。原创 2017-01-30 00:13:19 · 3644 阅读 · 0 评论 -
STM32高级开发(3)-设置与更新ubuntu
本打算一篇写完的后来感觉好像篇幅有些长,所以分成了两个部分。原创 2017-01-29 23:12:57 · 3152 阅读 · 2 评论 -
STM32高级开发(8)-链接器与启动文件
在上一篇中我们介绍了,样例工程中的makefile的工作原理和功能。我想对大多数童鞋来说理解编译器将**.c**文件编译为**.o**文件并不大困难,但是却难以明白最后链接的过程,是什么作用和为什么要这样做。还有就是我们在样例工程中启动的文件为什么是自己编写的,它有怎样做到将程序入口引导到main函数上,那么在这篇中我们就来深入的讨论下这两个话题。原创 2017-02-04 18:21:33 · 13227 阅读 · 17 评论 -
STM32高级开发(6)-makefile与调试器驱动
上一篇我们介绍了整套开发环境中的最重要的一环 :编译工具链。而在这篇中我们会介绍与其配合使用的makefile与调试器驱动,将这些工具结合,我们所需要的开发环境就简单的搭建完成了。最激动人心的:在这篇文章的最后我们将去尝试编译一个流水灯程序。原创 2017-01-30 21:20:32 · 14910 阅读 · 40 评论 -
STM32高级开发(9)-学习与编译libopencm3-example
在前面的几篇中我们为大家介绍了在Linux下stm32开发环境的新特性和使用方式,可能大家觉得,我怎么写一个工程还要自己写链接文件和启动文件,是不是太不方便了点。那么这篇中我会告诉大家其实并不是这样的。在我们日常的一些小规模工程下我们是可以使用一个叫做libopencm3的cortexM核的通用驱动库来配置我们的工程。原创 2017-02-08 12:35:13 · 10156 阅读 · 4 评论 -
STM32高级开发(10)-搭架你自己的libopencm3工程
在上一篇中,我们介绍了下载和使用libopencm3固件库的官方例程,同时我们也介绍了官方历程中的makefile等文件结构和引用方式,不知道大家注意到没有,实际上在我们使用的makefile中的目标里,是有flash等通过调试器下载的操作的,但是由于在rules.mk的文件下存在一些错误,所以可能工作并不正常。而且在我们实际的使用中不会涉及到那么多的MCU型号和开发板,所以在这篇中我们就来教大家,原创 2017-02-08 19:17:29 · 5975 阅读 · 5 评论 -
STM32高级开发(11)-使用GDB调试你的工程
在GNU编译器中,GDB无疑起着无足轻重的位置,常言有道:写工程3分靠写,7分靠调。GDB作为GNU编译器下的标准调试工具,在我们的项目编写即调试过程中会被平凡的使用到。而由于我们在IDE环境下娇生惯养出来的习惯,我们可能不太容易上手一个用命令行为主要操作和显示形式的调试器。所以在这篇中我们会为大家详细的讲解GDB工具的使用,来让大家快速的入门。原创 2017-02-08 23:51:25 · 25054 阅读 · 12 评论 -
STM32高级开发(12)-在GCC中使用printf打印串口数据
在大家使用keil或是iar开发stm32等arm芯片的时候,想来最不陌生的就是使用print通过串口输出一些数据,用来调试或是其他作用。但是要明确的是由于keil iar gcc 他们使用的标准C语言库虽然都遵循一个标准,但他们底层的函数实现方式都是不同的,那么在GCC中我们能否像在keil中一样重映射print的输出流到串口上呢?答案是肯定的。原创 2017-02-10 11:36:27 · 12914 阅读 · 15 评论 -
STM32高级开发(13)-Ubuntu下的串口助手minicom
在这么长时间里我们在Ubuntu上调试stm32,大家在使用串口的时候是不是一直都是在宿主机上的串口助手中查看串口信息呢?来回切换是不是很麻烦?那么在这篇中我们就来介绍一下在Ubuntu下的串口助手,或者准确点说应该叫串口终端,它就是minicom。原创 2017-02-10 12:22:21 · 3460 阅读 · 0 评论 -
STM32高级开发(1)-开源是什么
开源的历史及简介在上个世纪计算机发展的早期阶段,软件几乎都是开放的,任何人使用软件的同时都可以查看软件的源代码,或者根据自己的需要去修改它。在程序员的社团中大家互相分享软件,共同提高知识水平。这种自由的风气给大家带来了欢乐,也带来了进步。但不久之后,以微软为主的一些商业公司就破坏了这种风气。这些商业公司从自由的计算机社团里雇佣了大量的技术高手,开发带有知识产权保护的专有软件。他们在分发软件的时候也不原创 2017-01-29 15:20:32 · 11923 阅读 · 11 评论 -
STM32高级开发(2)-安装使用ubuntu
作为一切开发的起点,我们首先要安装一个Linux发行版系统作为我们开发的最基础的支持性平台,这里推荐下载ubuntu系统,ubuntu可以说是近些年来最流行和使用广泛的Linux发行版系统了。原创 2017-01-29 18:18:37 · 5349 阅读 · 0 评论 -
STM32中使用printf打印串口数据
STM32使用printf打印串口该方法适用于STM32的串口重映射方式,实现了使用printf等标准C流函数输出数据的办法,极大的减少了输出串口数据时所需要做的数据处理。原创 2016-03-13 12:12:04 · 45896 阅读 · 2 评论