初试stm32嵌入式开发遇到的巨坑】的更多相关文章

开发板使用的是st官方的stm32F207ZG nucleo,遇到的问题是在keil中报错: no target connected 到网上找答案,都是说gpio口的问题,让按着reset键改debug 的setting然后再download就好了,试了好久都没效果,遂放弃.还有的说可能是芯片没上电,我想,我这儿插着usb呢,咋会没电. 后来在一个群里和网友讨论到凌晨三点半,无果,最后推荐我试一下gnu 的toolchain,那样的话他对报错会熟悉一些,有可能可以搞明白,试过后,无果. 后来又下…
对于更开始入坑的同学,可能也像我一样搞不清楚两者的区别与联系.现在结合知乎网上的相关资料发一篇文章来具体分析. 基于STM32的开发属于微控制器开发领域,主要开发工具是keil或IAR,这种开发更准确的说法是单片机开发或者硬件开发:而招聘里所说的嵌入式开发,开发环境是基于Linux操作系统,这种开发一般会分为几个层次:驱动开发.操作系统层开发.应用层开发.开发后者所需了解的知识和前者的不是在同一个层次上. 如果玩过Arduino和树莓派,那么这个就很好理解了.STM32开发和Arduino是同一…
本文中,笔者将介绍使用嵌入式开发工具Keil uVision5,使用C语言,对微处理器STM32F103C8进行嵌入式开发. 开发使用C语言,首先需要新建一个C语言文件,将其设为主函数的入口,因此,将此文件命名为main.c 配置好软硬件依赖环境后,在此文件中键入如下内容,尝试编译,如果能够编译成功说明环境配置成功. stm32f10x.h库的功能是提供对于stm32f10x系列开发板的所有功能的定义与实现,因此在头文件中要加一句. #include <stdio.h> #include &l…
一,Docker 的安装 Windows 安装  Docker 官方文档: https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/quick-start/quick-start-windows-server Docker 在不同Windows版本的系统上安装,安装方法是有差异的. 1,在Win10 的安装 在 官方网站 上注册一个账号,下载程序进行安装就可以了,整个安装过程绝比安装一个QQ要简单很多. 2,在Windo…
本文我们将了解STM32与外部设备通过串口通信的方式. 所谓串口通信,其实是一个类似于计算机网络的概念,它有物理层,比如规定用什么线通信,几伏特算高电平,几伏特算低电平.传输层,通信前要发RTS,CTS.每一层都有不同的协议所约束.在STM32中采用的USART就是其中之一. USART模块由GPIO_InitTypeDef结构体控制,它的定义如下 typedef struct { u32 USART_BaudRate; // 波特率 u16 USART_WordLength; // 字长 u1…
下面我们进行几个串口通信的实际应用. 实验一:发信实验,让开发板通过串口向电脑发送信息: #include <stdio.h> #include <stm32f10x.h> #include <led.h> #include <button.h> #include <systick.h> #include <time.h> #include <usart.h> int main() { NVIC_PriorityGroup…
前面我们讲过,因为在STM32上没有系统时间的接口,因此无法调用sleep函数,在本文中,笔者将利用滴答计时器实现精准延时. 查阅技术手册,滴答计时器依赖于一个SysTick_Type类型寄存器,定义如下 typedef struct { vu32 CTRL; vu32 LOAD; vu32 VAL; vuc32 CALIB; } SysTick_TypeDef; 四个成员分别意义是控制和状态,重装载值,当前值,校准值. 滴答计时器的原理很简单,就是利用系统时钟信号,每接到一个时钟信号计数器加一…
按键和小灯一样,也是通过GPIO外设与主板连接,也是通过GPIO_InitStruct类型结构体控制其工作. 查阅技术手册,按钮连接GPIOA控制下的管脚0. 但与之不同的是,按键是一种输入设备,输入设备的工作状态也有四类,模拟输入,浮空输入,下拉输入和上拉输入. 模拟输入就是输入一个波形,浮空输入指的是未按下按钮时,不确定此管脚的信号状态. 上拉输入指按下按钮时,输出低电平,即0,松开按钮时,输出高电平,即1. 下拉输入则相反. 但是因为STM32的构造问题,按钮只能采用上拉输入,如果将此管脚…
我们过去了解了用循环实现延时,或用系统滴答计时器实现延时,但这两种方法都有一种问题:会阻塞处理器的运行.下面我们学习一种不阻塞处理器运行其他事件的功能:时钟中断. 所谓中断,就是让处理器放下手头的事情,立刻去做一件事情,做完了再做原来的事情.比如说你在写作业,但是突然来了一个人找你说话,你就停下来跟他说话,这就是中断. 要实现时钟中断,我们必须了解两种特性:通用定时器和中断控制器. 通用定时器也是通过晶体产生脉冲信号用于定时的定时器,和滴答计时器(systick)的区别是通用定时器在外设上,滴答…
将所有的函数都堆在main.c文件里不是好的选择,庞大的代码文件会是你维护的障碍,明智的做法是,一种功能封装到一个库文件里. 库文件就是你代码开始部分写的#include<xxxx.h>里面的xxxx.h,让我们打开stdio.h文件看一看里面具体有什么内容. /* Copyright (c) 2002, 2005, 2007 Joerg Wunsch All rights reserved. Portions of documentation Copyright (c) 1990, 1991…
写在前面 这个golang+vue大部分的内容是基于bydmm(橙卡)大佬的视频学来的,我在这里只是做一下个人开发的笔记,就是图一个乐,毕竟我只是个应届毕业生,如果真的要学请:bydmm的b站空间. 正式开始 这篇内容适合几乎没什么基础的新人来学这来方面的内容,但是起码得有其他语言的基础,最少大学的java学懂了一些,这里要求的go基础就需要把菜鸟教程中的内容看个大概即可,vue的话只需要你懂一些html的基础,js基础,css基础即可,这些内容都可以在w3c上学即可.接下来就可以看这个系列的巨…
PlatformIO简介 PlatformIO是开源的物联网开发生态系统.提供跨平台的代码构建器.集成开发环境(IDE),兼容 Arduino,ESP8266和mbed等 支持在Windows.Linux.macOS上使用预编译好的工具链,调试器和框架进行开发.它支持超过350个的嵌入式设备,超过20个的开发平台,超过10个的框架. Atom PlatfromIO IDE是基于Atom的新一代集成开发环境.提供了C/C++的代码智能提示,程序库管理,内置命令行等功能. Visual Studio…
相信很多小伙伴都在android开发中遇到调用jni的各种巨坑,因为我们不得不在很多地方用到第三方库so文件,然而第三方官方通常都只会给出ADT环境下的集成方式,而谷歌亲儿子android studio默认采用的却是gradle方式,与ADT编辑的方式大不相同,那再andorid studio中如何导入so文件呢? 在android studio 中我们可能会用到jar包和so文件的方式,对于jar包可能接触更多,只需要我们把工程转换为project显示方式,打开app下的libs文件夹,导入即…
CSDN学院讲师韦东山:悦己之作,方能悦人 发表于2015-04-28 08:09| 6669次阅读| 来源CSDN| 24 条评论| 作者夏梦竹 专访Linux嵌入式开发韦东山操作系统图书作者 摘要:从一名资深的软件工程师到图书作者,再到百问科技缔造者,韦东山这一路走来,也有自己的辛酸感悟:但不论何时,他从未忘记学习,用他的话说:“悦己之作,方能悦人”. [编者按]韦东山,深圳百问网科技有限公司技术创始人,毕业于中国科学技术大学,电子.软件专业双学位,擅长ARM/MIPS等架构的Linux开发…
Eclipse+CDT+YAGARTO+J-Li:开源开发环境搭建与调试:作者:Chongqing:邮箱:ycq.no1@163.com:文档版本:V1.0:发布日期:2014-08-04:前言:此文档本着开源精神,基于LGPL协议发布:因网上开源的单片机.微控制器开发平台信息很少,故:因用ARM公司的KeiluVision开发环境开:因Eclipse是一个     Eclipse + CDT + YAGARTO + J-Link,STM32 开源开发环境搭建与调试 作者 :Chongqing…
一.嵌入式系统的概念 着重理解"嵌入"的概念 ,主要从三个方面上来理解. 首先,从硬件上,"嵌入"是基于CPU的处围器件的,整合到CPU芯片内部,就好比早期基于X86体系结构下的计算机,CPU有的是运算器和累加器的功能,一切芯片要通过外部桥路来扩展实现,象串口之类的都是凭借着外部的16C550/2的串口控制器芯片实现,而目前的这种串口控制器芯片早已集成到CPU内部,而且PC机有独立的显卡,而多数嵌入式处理器都带有LCD控制器,就其意义来说就相当于显卡. 从软件上来说…
Hey,大家好!我是CrazyCatJack.今天我来说几个在嵌入式开发中常用的C语言技巧吧.也许你曾经用过,也许你只是见到过但是没有深入理解.那么今天好好补充下吧^_^ 1.指向函数的指针 指针不光能指向变量.字符串.数组,还能够指向函数.在C语言中允许将函数的入口地址赋值给指针.这样就可以通过指针来访问函数.还可以把函数指针当成参数来传递.函数指针可以简化代码,减少修改代码时的工作量.通过接下来的讲解大家会体会到这一点的. /*函数指针简单讲解 *通过指向函数的指 *针调用比较两个数 *大小…
前言 在我们日常的网页浏览中,我们非常喜欢做一个操作:点击浏览器的前进后退在Ajax技术出现后,有些时候前进后退就会给开发者带来困扰,甚至一些开发者试图去干掉History随着Html5的发展,移动端的兴旺,单页应用出现了,于是History的处理被不得不提上议程了!要知道,这一直是一项让人不愿意去碰的巨坑,但是单页应用却不得不去解决 首先History的处理逻辑看似简单,实则复杂,稍不注意就会出问题,我们这里来探讨下单页中History的处理规则 基础知识 javascript中History…
一.从一个问题说起 相信很多人在玩手机还是PC时,都曾碰到过这样一种情况,安装的软件多了系统性能就变慢了,但是去查看CPU利用率一直都低于10%,内存也很充足.我在近期的开发工作中就碰到了类似的情况,不同的是,系统此时只有一个测试程序和几个睡眠的后台进程,说明是系统,特别是驱动部分可能出现问题导致的. 从操作系统角度上分析,以下是一些比较可能的原因: 大量的中断可能是在不断磁盘读写,网络通讯, 也可能是模块使用不当或者硬件上出问题导致外设不断给CPU送中断: 系统负载高(注意:不是CPU利用率)…
iTOP-4412 ARM嵌入式开发板----主要特点 iTOP-4412开发平台是北京迅为电子研发设计的嵌入式开发板平台,核心板配备64位双通道2GB DDR3,16GBEMMC存储,三星原厂S5M8767电源管理芯片,低功耗.底板板载高精度GPS模块,WIFI蓝牙模块,CAN,RS485等工业接口.资料,源码全开源. iTOP-4412 ARM嵌入式开发板 iTOP-4412 ARM嵌入式开发板 iTOP-4412 ARM嵌入式开发板----硬件参数屏幕屏幕尺寸 选配7寸高清电容屏/9.7寸…
[一个巨坑] a.bat的内容:echo 1b.batecho 2执行结果:运行a.bat时,输出1,然后调用b.bat, 但是 echo 2 显示不出来. bat怎么调用bat文件并返回? 例如主文件为1.bat,怎么调用2.bat,并在2.bat运行完后返回1.bat继续运行? 答:用call就行了,即在1.bat中call 2.bat…
经过若干天的反复测试,搜索.终于成功利用 Qemu 在 u-boot 下引导 ARM Linux 4.7.3 内核.如下详细解释整个构建过程. 准备环境 运行环境:Ubuntu 16.04 需要的虚拟机:Qemu 交叉编译环境:ARM GCC 内核源码:Linux 4.7.3 u-boot源码:u-boot-2016.09 安装 Qemu . ARM GCC $ sudo add-apt-repository ppa:linaro-maintainers/tools $ sudo apt-get…
详情转自:http://topeetboard.com S5P4418核心板可以无缝支持核心系统S5P6818,并保持底板设计不变,将兼顾更高端 的应用领域,为项目和产品提供更好的灵活性以及可伸缩性. 嵌入式开发平台-S5P4418核心板参数 CPU:ARM Cortex-A9 四核 S5P4418(S5P6818)处理器 主频:S5P4418 四核处理器,主频 1.4GHz:S5P6818 八核处理器,主频1.4GHz 尺寸:50mm*60mm 高度:核心板连接器为1.5mm 内存:1GB D…
1. 实验目的 搭建嵌入式开发环境,安装ubntu,编译交叉工具链,安装配置tftp,nfs.用makefile 编译几个文件,在实验台上运行. 2. 实验内容 1) 安装ubuntu12.04 2) minicom端口配置 3) TFTP服务配置 4) NFS服务的配置. 5) 安装交叉编译器 6) 运行helloworld 3. 主要仪器设备 1) 笔记本,安装Ubuntu12.04系统. 2) 英培特eduk4-s3c2410试验平台 4. 操作方法和实验步骤 4.1 安装交叉编译器 4.…
网站:http://www.topeetboard.com 淘宝:https://item.taobao.com/item.htm?_u=okcahs0f42a&id=38712193806 QQ咨询:2551456065 电话咨询:010-58957586 开学猴赛雷-------当前最好的嵌入式开发平台 选择迅为4412嵌入式开发学习板的的四大理由 1.超值的价格 最新推出468元学习板套餐 2.强悍的性能 Linux.Android学习一块板子轻松搞定, iTOP-4412开发板搭载三星四…
初学嵌入式开发,由于是自学,走了很多弯路,现总结一下嵌入式ARM-LINUX开发环境搭建步骤: 1.安装linux系统,由于初学,我选择fedora 14.安装的具体步骤就不详细说了. 2.安装NFS服务器: NFS服务器用于UNIX和UNIX之间的通信,分为主机和客服端,需要安装NFS服务器软件包,其中nfs-utils-*包提供NFS服务器启动脚本和管理维护工具. 服务器端: (1).安装NFS服务器软件包  例:rpm -ivh nfs-utils-*.rpm (2).启动NFS服务程序…
嵌入式开发概述 由嵌入式本身的特性所影响,嵌入式系统开发与通用系统的开发有很大的区别,嵌入式的开发分为系统总体开发,嵌入式硬件开发,嵌入式系统软件开发3大部分 在系统总体开发中,由于嵌入式系统与硬件依赖非常紧密,往往某些需求只能通过特定的硬件才能实现,新词需要进行处理器选型,以更好地满足产品的需求.另外,对于有些硬件和软件都可以实现的功能,就需要在成本和性能上做出抉择,往往通过硬件实现会增加产品的成品,但是能够大大提高产品的行了电脑和可靠性 在系统总体开发,由于嵌入式系统与硬件依赖非常紧密,往往…
Android开发需要注意的坑一览​对于一些Android开发过程中坑爹.细小,但又重要的错误的总结​Android开发在路上:少去踩坑,多走捷径其他参考: ​google官方版本发布图 ​umeng设备类型参考 ​设计指南  …
一.外设常具备的几类寄存器 控制寄存器xxx_CR (Control/Configuration Register): 用来配置.控制响应外设的工作方式,如GPIOx_CRL.AFIO_EXTICR1~AFIO_EXTICR4. 数据寄存器xxx_DR (Data Register) : 存储量外设进行输入输出的数据,如GPIOx_IDR.GPIOx_ODR.USART_DR等. 状态寄存器xxx_SR(Status Register): 实时的更新存储着外设的当前运行状态,主要是一些标志位,如…
整理自C语言面试题(嵌入式开发方向,附答案及点评) 预处理器(Preprocessor) 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没…