《Cortex-M0权威指南》之Cortex-M0编程入门

发布者:TranquilVibes最新更新时间:2016-12-19 来源: eefocus关键字:Cortex-M0  编程入门 手机看文章 扫描二维码
随时随地手机看文章

嵌入式系统编程入门 

微控制器是如何启动的

  为了保存编译号的二进制程序代码,大多数的现代微控制器都会包含片上flash存储器。有些微控制器还可能有一个独立的启动ROM,里面装有Bootloader程序。微控制器启动后,再执行flash的用户程序前,Bootloader会首先运行。

  在复位流程中,处理器会取出MSP的初始化值和复位向量,然后开始执行复位处理,这些信息都放在一个叫做启动代码的程序文件中。启动代码中的复位处理可能还会旅行初始化的职责,比如时钟控制电路和锁相环PLL的初始化。有些情况下,系统初始化的工作是放在C程序的main()函数中进行的。

  对于用C开发的应用程序,在进入主流程之前,启动代码已经开始执行,并且对应用程序用到的变量和内存等进行初始化。启动代码无需编程者担心,C开发工具会将其自动插入程序映像中。

  执行完C启动代码后,应用程序就开始执行了,应用程序通常包含下面几个部分:

  • 硬件初始化(如时钟,PLL和外设)

  • 应用程序的处理部分

  • 中断服务程序

  另外,应用程序可能会用到C语言库,此时,C编译器/链接器会将所需要的库函数加入编译好的程序映像中。

  硬件初始化可能会涉及到一系列的外设、系统控制寄存器和中断控制器。如果在复位处理时没有进行处理,系统时钟控制和PLL此时也需要进行初始化。外设初始化完成后,程序就可以继续执行应用程序部分了。

 

嵌入式程序设计

  应用程序处理流程的实现方式如下:

  • 轮询,如图4-4

  • 中断驱动,如图4-5

  • 轮询和中断组合使用,如图4-6

  • 处理并发任务(操作系统),如图4-7

 

 

  对于复杂的应用程序,可以使用实时操作系统(RTOS)。RTOS将处理器时间划分为多个时间片,在有多个应用进程运行时,只有一个进程会获得时间片。使用RTOS,需要有定时器产生周期性的中断请求,当一个时间片的时间到时,RTOS的任务调度器会由定时器中断触发,调度器判断是否需要执行上下文切换。如果需要进行上下文切换,调度器会暂停当前执行的任务,并切换到下一个准备就绪的任务。

 


 

输入和输出

  在许多嵌入式系统中,输入或输出可能会局限与简单的电子接口,如uart、IO、LCD、SD卡等,这些接口由微控制器的外设控制。

  Cortex-M0的寄存器映射到了系统空间,并且它们还控制这外设,外设的典型初始化步骤如下:

  1. 配置时钟控制回路,使能外设的时钟信号,如果有必要的话,初始化相应的引脚。在许多低功耗控制器中,时钟信号被分为了多路,而且为了降低功耗,它们可以单独开关。大多数时钟信号默认都是关闭的,配置外设前需要使能相应的时钟。有些情况下,还可能需要使能外设总线系统的时钟。

  2. 配置IO口。大多数控制器的引脚都是复用的,需要对IO引脚进行相应的功能配置。

  3. 配置外设。大多数外设有自己的控制寄存器,为了确保外设工作正常,需要对寄存器进行配置。

  4. 配置中断。如果外设操作需要中断处理,需要配置中断控制器(NVIC)。

 


 

开发流程

   在嵌入式开发中,可以使用C、汇编、C和汇编混合编程。程序代码的生成流程如下图所示。

  C/汇编通过对应的编译器生成相应的目标文件,链接器脚本加载分散的目标文件生成可执行映像。

  混合编程的实现是因为C编译器提供了内联汇编器,以便在C程序文件中内联汇编代码。

 


C和汇编的选择


程序映像详解

  Cortex-M0的程序映像一般包括以下几部分:

  • 向量表

  • C启动代码

  • 程序代码(应用程序代码和数据)

  • C库代码(C库函数的程序代码,链接时插入)


关键字:Cortex-M0  编程入门 引用地址:《Cortex-M0权威指南》之Cortex-M0编程入门

上一篇:【AT91SAM3S】ADC中断方式采集数据
下一篇:《Cortex-M0权威指南》之体系结构---程序映像和启动流程

推荐阅读最新更新时间:2024-03-16 15:26

plc编程入门_如何学习PLC编程
所有plc加密者都有两个冠冕堂皇的理由。 一是保护知识产权,一是讨要工程款。 保护知识产权者说自己辛辛苦苦做的程序,一下子让人家仿了,心里不甘,可是反过来想想,你编的程序真的是那么高明吗,真的是无懈可击吗,你的售后服务做的那么到位吗,能随时为客户做修改吗。如果不行,客户遇到问题怎么办,找谁来修,难道只能停机,八抬大轿请你这个编程高手悠悠哉哉来处理。再说了那点程序能编程的人多着呢,我有个朋友做机械设备的,要做人家已开发的设备,他就是仿做的同时,要加入自己的更好的东西,不可能一模一样的,让我给他编程,我说算了,我解密把别人程序读出来直接用,他说不要,那是没有核心技术的,故障了都不懂得怎么查,再去分析别人的程序,就看象天书。我忍
[嵌入式]
Cortex-M0权威指南》之Cortex-M0编程入门
嵌入式系统编程入门 微控制器是如何启动的   为了保存编译号的二进制程序代码,大多数的现代微控制器都会包含片上flash存储器。有些微控制器还可能有一个独立的启动ROM,里面装有Bootloader程序。微控制器启动后,再执行flash的用户程序前,Bootloader会首先运行。   在复位流程中,处理器会取出MSP的初始化值和复位向量,然后开始执行复位处理,这些信息都放在一个叫做启动代码的程序文件中。启动代码中的复位处理可能还会旅行初始化的职责,比如时钟控制电路和锁相环PLL的初始化。有些情况下,系统初始化的工作是放在C程序的main()函数中进行的。   对于用C开发的应用程序,在进入主流程之前,启动代码已经开始执行,并且
[单片机]
《<font color='red'>Cortex-M0</font>权威指南》之<font color='red'>Cortex-M0</font><font color='red'>编程入门</font>
LPC1114(CORTEX-M0)MCU 解锁关闭SWD(ISP下载)
使用LPC1114调试ADC的时候更改了PIO1_3的设置,关闭了SWD,单片机写不进去程序了。 LPC1114还支持ISP下载方式,只需要一个USB转TTL电平的串口下载器和一个免费的软件Flash Magic。 方法如下: 1、建立硬件连接,同时将MCU的PIO0_1通过跳线连接到GND。 连接USB转COM TTL到LPC1114评估板 USB2COM接口板 LPC1114 __________ __________ GND|-----|GND RXD|-----|TXD TXD|-----|RXD ----- | | GND----|PIO0_1 | 2、复位MCU后MCU进入I
[单片机]
LPC1114(<font color='red'>CORTEX-M0</font>)MCU 解锁关闭SWD(ISP下载)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved