这个寒假有幸在学长的帮助下接触到arm,作为单片机还没学明白的我,51基础也就是几节郭天祥老师的视频,现在学习arm也是一头雾水。不过也学了这么多天了,需要整理下思路来看看自己学了什么了。好了,废话不多说,开始我的arm的学习之路。
准备条件
1.一块开发板。(笔者认为这是非常重要的,方便你能随时对你的代码进行下载调试。笔者手上的是一块最新的ARM CORTEX M0内核的STM32F091RC开发板)。
2.一个顺手的IDE。(对于软件,我的观点一向是最新的就是最好用的,所以我用的是KEIL的5.13版本,在此附上[[链接]](%28https://www.keil.com/demo/eval/arm.htm#DOWNLOAD%29)
和适合你开发板的pack包[地址](http://www.keil.com/dd2/Pack/))。
3.ST公司提供的标准固件库。(我的开发板是F0系列,希望大家根据自己的板子自己选取适合自己的[库](http://www.st.com/web/en/catalog/tools/FM147/CL1794/SC961),库里面有各种外设的性能特性和应用实例,帮助我们更好的应用和掌握STM32,由于库里的驱动源代码都符合Strict ANSI-C标准,所以不受开发环境影响。而且,在固件库中还有各种新出型号的补丁工具,笔者的STM型号就是在固件库的补丁工具中添加的)。
4.最后,也是必不可少的,你需要一本数据手册和一些指导书。(链接我就不附了,大家可以自行寻找)。
建立工程
准备工作就绪,下面就开始建立你的第一个工程吧。
新建文件夹demo,在里面建立4个文件夹
core文件夹:core 存放固件库的核心支持文件core_cm0.hcore_cm0plus.h
startup_stm32f091。
2.Library文件夹:从固件库里复制过来的Library文件夹。
3.User文件夹:User 存放main.cmain.hstm32f0xx_conf.hstm32f0xx_it.cstm32f0xx_it.h文件。
4.Project文件夹:待用。
打开keil软件创建工程
(1).选择自己的MCU型号,将工程建在Project文件夹中。
(2).调出Manage Components进行设置
对其添加4个组,分别为User,Lib,CMSIS,Startup。
并对各个组添加用户的用文件
User组中添加自己USER文件夹中的main.c和stm32f0xx_it.c
Lib组中添加刚才Library文件夹中的STM32F0xx_StdPeriph_Driversrcstm32f0xx_gpio.c和stm32f0xx_rcc.c添加
CMSIS中找到Libraries\CMSIS\Device\ST\STM32F0xx\Source\Templates\system_stm32f0xx.c添加进去
Startup中按路径Libraries\CMSIS\Device\ST\STM32F0xx\Source\Templates\arm\startup_stm32f091.s添加
完成后,点一下编译后,你会发现这么多错误!!!
仔细分析,不难发现,这些错大部分是这种..LibrariesSTM32F0xx_StdPeriph_Driversrcstm32f0xx_gpio.c(76): error: #5: cannot open source input file “stm32f0xx_gpio.h”: No such file or directory文件在编译时没有打开头文件,我们的程序中,把各个头文件都放在了不同的文件夹内,当我们#include的时候,会自动向本文件夹内寻找,但是在找不到要包含的头文件的时候,就只能报错了,想解决这种错误,我们需要给他寻找头文件添加一个路径。把需要的头文件包含进来。
按图中步骤进行添加后,我们再来编译下试试。
错误怎么还变多了!!!这是怎么回事???
不用着急让我们慢慢分析代码:错在什么地方了呢?..LibrariesSTM32F0xx_StdPeriph_Driversrcstm32f0xx_gpio.c(122): warning: #223-D: function “assert_param” declared implicitly
assert_param(IS_GPIO_ALL_PERIPH(GPIOx));让我们看下这个警告,assert param()这个函数在哪呢?继续追踪可以发现在stm32f0xx_conf.h文件中有如下定义:
/* Exported types ------------------------------------------------------------*/
/* Exported constants --------------------------------------------------------*/
/* Uncomment the line below to expanse the "assert_param" macro in the
Standard Peripheral Library drivers code */
/* #define USE_FULL_ASSERT 1 */
/* Exported macro ------------------------------------------------------------*/
#ifdef USE_FULL_ASSERT
/**
* @brief The assert_param macro is used for function's parameters check.
* @param expr: If expr is false, it calls assert_failed function which reports
* the name of the source file and the source line number of the call
* that failed. If expr is true, it returns no value.
* @retval None
*/
#define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0)
#endif /* USE_FULL_ASSERT */
既然已经定义了,为什么还是有警告呢?在看发现在stm32f0xx.h的第5826行有如下代码:
`#ifdef USE_STDPERIPH_DRIVER
#include "stm32f10x_conf.h"
#endif `
对,问题就出在这。然后,我们加上这句话
再次进行编译,程序完美运行了!!!
到此我们的工程就建好了。
程序下载
以后,如果接下来你还想把自己编写的程序下载到板子上,那么,你还需要这最后一步。
1.安装驱动后,打开STM32 ST-LINK Untility点击链接,如果出现以下界面,表明驱动安装成功。
或在设备管理器中出现以下界面
2.在MDK中设置下载选项
之后选择settings进入如下界面
圈出部分如是JTAG改为SW。点击Flash Download如图标选:
其他的选默认。
设置完成后,点load进行下载。
上一篇:关于STM32F2系列项目开发工程文件的建立
下一篇:一步步告诉你stm32开发环境搭建流程
推荐阅读
史海拾趣
DIALIGHT公司一直专注于工业LED照明领域的发展。他们深入了解工业空间照明的需求和挑战,设计了一系列专为工业应用而定制的LED照明产品。这些产品不仅易于安装和维护,而且能在恶劣的环境下持续使用。此外,DIALIGHT还提供集成系统解决方案,帮助客户降低能源成本、维护成本和碳足迹,同时提高设施的安全性和生产力。通过不断创新和优质服务,DIALIGHT在工业LED照明领域赢得了广泛的认可和信赖。
面对日益激烈的市场竞争和客户需求的变化,FORYARD决定实施智能制造转型。公司投入巨资引进先进的自动化生产线和智能管理系统,实现了从原材料采购、生产加工到成品检验的全流程智能化管理。这一转型不仅大幅提高了生产效率和产品质量,还降低了人力成本和运营成本。同时,FORYARD还积极拥抱工业互联网和大数据等新技术,通过数据分析优化生产流程、预测市场需求,进一步提升了企业的竞争力和市场响应速度。
为了满足市场的不断增长的需求,昭华公司在2016年成立了昭华智硕东莞工厂。这座工厂拥有先进的生产设备和完善的生产流程,能够大幅提高公司的生产效率和产品质量。同时,昭华公司还不断优化供应链管理,加强与供应商的合作,确保原材料的稳定供应。这些举措不仅提高了公司的产能,还降低了生产成本,增强了公司的市场竞争力。
ASI Semiconductor, Inc.(以下简称ASI)的故事始于1979年,当时它在美国加利福尼亚州北好莱坞成立。作为一家初创企业,ASI专注于设计、供应和市场先进的高功率、脉冲射频晶体管和托盘。在早期,ASI以其独特的技术视角和市场需求洞察,迅速在行业中站稳了脚跟。通过与摩托罗拉、飞利浦等公司的合作,ASI开始为商用航空电子设备、雷达、医疗和工业应用提供高质量的射频功率晶体管。这种初步的成功为ASI日后的快速发展奠定了坚实的基础。
GigPeak公司自成立之初,便专注于高速数据传输技术的研发。在2005年,公司研发团队成功开发出一种新型的光电转换器,该转换器能够在极低的功耗下实现前所未有的数据传输速率。这一技术创新迅速吸引了业界的关注,并成功应用于多个高端数据中心项目,帮助GigPeak在竞争激烈的市场中脱颖而出。随着技术的不断迭代和市场的广泛认可,GigPeak逐渐成为了高速数据传输领域的领军企业。
为了进一步增强市场地位和扩大产品线,GigPeak在2010年实施了一项重要的并购战略。公司成功收购了另一家在光纤通信领域具有深厚技术积累的企业,这次并购不仅为GigPeak带来了先进的产品线和研发资源,还显著提升了其在全球市场的份额。通过整合双方的优势资源,GigPeak在光纤通信领域的技术实力和市场份额均实现了质的飞跃。
想用ARM开发板接两路模拟摄像头,复合信号输入。 有些板子(像飞思卡尔)太贵,如果选用三星的ARM9,虽然有些支持模拟视频输入,但只是一路。 不知道有没有支持两路(或更多)模拟视频输入的ARM9开发板? 或者有没有其它转接模块? 现在有很多 ...… 查看全部问答∨ |
|
Moden收到来电后在没有接听前每5秒发送RING/CRING,这个时间间隔太长了,我现在想要快速得到对方挂机的消息,2秒左右吧,不知道是否能实现。 尝试发送AT+CPAS检测状态,但是总是返回0(待机)。我看91program几年前问过这个问题,不知道你实现没有 ...… 查看全部问答∨ |
|
本帖最后由 paulhyde 于 2014-9-15 03:43 编辑 最近经常有参加电子设计大赛的同学讨论这样的问题:我最近在学XX单片机或者XX ARM,不知道这个对大赛是否有用?或者参加电子设计大赛最好学什么控制器?应该从以下几个方面去考虑 ...… 查看全部问答∨ |
本帖最后由 ddllxxrr 于 2016-1-7 17:04 编辑 价值2500元的嵌入式面授培训,培训课程由深圳信盈达电子有限公司提供,地点在深圳,有效期至2012年7月 1000元低价转让 … 查看全部问答∨ |
这两天看了看pandaboard ES 和 beagleboard xM / beaglebone 这些开源项目搞个团。板子看着都不错啊。… 查看全部问答∨ |