查看: 394|回复: 0

[分享] LPC800前生今世 第四章-系列总览指南书中的例程和项目文件

[复制链接]
  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3301

    主题

    6548

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32040
    最后登录
    2024-4-28
    发表于 2023-10-19 11:32:59 | 显示全部楼层 |阅读模式
    LPC800前生今世 第四章-系列总览指南书中的例程和项目文件
    本书中的全部例程都是在IAR的Embedded Workbench for ARM v8.20.2上编写和测试的,附带的项目文件和代码也都适合于IAR的这个开发平台IDE,使用其它开发工具(例如KEIL或MCUXpresso)的读者,可以自行建立项目,然后把本文的代码拷贝过去。
    一、附属代码的目录结构


    提供的所有例程和代码,都被集中在IAR的一个工作区(Workspace)里面,读者把提供的ZIP文件解压到某个目录下(例如Workspace_IAR),就可以看到这个工作区的文件和其它一些目录,下面是目录截图:
    11.png
    LPC800_Cookbook_IAR_Workspace.eww就是集中了本文所有例程项目的工作区配置文件,读者可以双击这个文件启动IAR的IDE 开发环境,或在IAR软件中从菜单File/Open Workspace...打开这个文件。稍等片刻,即可看到这个工作区里集成的所有项目。


    除了这个工作区配置文件(.eww),读者还会看到其它几个目录:
    12.png
    打开目录LPC824_Example_Code_Bundle_IAR_r1.0,它的目录结构如右图。这里面包含了IAR的项目文件目录和一些源文件目录: 13.png
    14.png
    与本书各章节相关的代码都放在图18所示的“Projects”目录下,每个项目都有一个子目录,如右图所示:
    15.png
    16.png
    在IAR的IDE环境中,编译任何一个项目,确切地说是Build一个项目时,都会在项目所在的目录下按照不同的项目配置自动地生成一个目标文件的目录。例如上面截图中看到,对应项目Cookbook_NVIC_GPIO所生成的目标文件目录是Cookbook,而对应项目LPC82x_Lib、Peripherals_lib或Utilities_lib所生成的目标文件目录是flash,这个目录的名字是由当前项目的配置相关。


    在IAR的IDE中,点击Project Edit Configurations...后,就可以编辑所需要的配置名称,然后再点击Project Options...对该配置选项的各项配置进行选择,例如可以选择包含的文件、编译优化的级别、链接不同的函数库等。这样可以用一套源代码,得到不同的目标文件或可执行文件。有兴趣的读者可以参考IAR的相应文档,进一步了解其功能和使用方法。如下图:
    17.png
    二、例程项目下的文件


    有关一个例程项目的文件,都集中放置在一个相同的目录下,这个目录的名字都是以下面的形式命名:
    18.png
    模块名表示该例程是属于哪个模块,例如NVIC、SCT、GPIO等。


    功能名表示该例程所要实现的功能,例如Cookbook_NVIC_GPIO表示用GPIO演示NVIC的例程。另一个例子是,Cookbook_SCT_QEI表示是用SCT实现QEI(旋转编码器)的例程。


    以Cookbook_NVIC_GPIO为例,在每一个项目的目录下基本都包含下面一些文件:图片
    19.png
    每个项目的主函数源文件,都是使用与项目名称一样的名字,读者可以很容易地与其它源文件区分出来。项目中其它源文件的命名没有硬性规定,命名基本是以标示所执行的功能为原则。


    以下这几个文件,基本是每个项目里都有的源文件:
    ■  IAR_cstartup_M.s:是一个汇编文件。
    ■  system_LPC8xx.c:当CPU启动时,会从上述汇编文件中的复位入口开始执行指令,然后转到这个.c文件中,对LPC800中与时钟相关的振荡器、PLL等部分执行初始化。完成基本初始化后就转到用户自己的main()函数,因此如果没有特殊要求,尤其时需要尝试本书中的例程时,用户程序可以不用再考虑主时钟部分的初始化,此时主时钟已经被配置为30MHz的速率,用户程序可以直接运行其它模块的初始化了。
    ■  IAR_Redirect.c和Serial.c:当需要使用标准输入输出的函数,例如printf、scanf等时,项目里需要包含这两个文件,它们把这些标准输入输出函数与UART0对接。


    一般情况下,用户不必理会与项目相关的四个文件(*.dep  *.ewd  *.ewp  *.wet),如果需要了解详细信息,请参考IAR的相关文档。


    三、例程项目索引


    下面这张表是所有例程项目的索引,读者在需要尝试相应例程时,可以依据此表找到对应的项目代码。
    项目名称
    所在章节
    简要说明
    Cookbook_NVIC_GPIO
    3.1.5中断优先级和嵌套的演示例程
    演示中断嵌套的现象和效果
    Cookbook_SWM_LEDs
    6.3.3通过开关矩阵实现呼吸灯的轮转
    通过配置SWM改变信号的输出引脚
    Cookbook_SWM_USARTs
    6.3.4两个USART模块对接
    通过配置SWM实现2个USART在芯片内部对接
    Cookbook_SCT_QEI
    7.5使用IOCON的数字滤波功能实现按键去抖动的例程
    使用数字滤波实现按键去抖
    此部分在QEI的例程中
    Cookbook_GPIO_LEDs
    8.3 GPIO控制器使用例程
    演示如何直接操作GPIO
    Cookbook_GPIO_Pmat
    9.6.1异或的实现
    使用模式匹配引擎实现两个按键的异或操作
    Cookbook_GPIO_Pmat-Vote
    9.6.2三人表决器
    使用模式匹配引擎实现一个三人表决器的逻辑
    Cookbook_DMA_M2M
    10.7.1 DMA执行内存中的数据块拷贝
    使用DMA搬运内存中的数据块
    Cookbook_DMA_UART
    10.7.2 DMA执行USART0的连续发送(硬件触发)
    使用DMA发送数据串至UART,触发一次将发送出所有的数据字节
    Cookbook_DMA_UART_Burst
    10.7.3 DMA执行USART0的成组发送
    使用DMA发送数据串至UART,使用乒乓链接的描述符连续发送多个字符串,每触发一次将发送成组发出8个数据字节,循环往复
    Cookbook_UART_Basic
    11.5 USART实例
    使用中断方式接收UART传输的数据,再发送回去
    Cookbook_UART_HWFlow
    11.6带硬件流控的UART收发例程
    通过开发板上的按键和LED模拟和显示硬件流控
    Cookbook_UART_Autoband
    11.7 USART在异步模式下的自动波特率匹配
    演示自动波特率匹配的设置和使用
    Cookbook_UART_Sync
    11.8 USART的同步模式
    演示如何配置同步模式,并演示如何在没有示波器的情况下,查看输出的波形
    Cookbook_SPI_Master
    12.3.1 SPI的轮询方式操作
    使用轮询方式读出SPI Flash的若干ID
    例程中还包含一段简单的中断方式操作
    Cookbook_SPI_Int_M25B32BV
    12.3.3中断方式访问SPI Flash的完整例程
    使用中断方式实现对SPI Flash的所有基本操作,包括读写和擦除
    Cookbook_I2C_EEPROM_Polling
    13.3 I2C主机收发操作步骤——轮询方式
    演示主机模式下使用轮询方式进行I2C的收发
    Cookbook_I2C_EEPROM_Polling
    13.4监测功能的使用
    演示检测功能的使用以及数据的解读
    Cookbook_I2C_EEPROM_Int
    13.5 I2C主机收发操作步骤——中断方式
    使用状态机实现中断方式的I2C收发
    Cookbook_I2C_EEPROM_Int
    13.6 LPCOpen里如何实现I2C主机收发
    使用状态机实现中断方式的I2C收发,这是LPCOpen中的实现方法
    Cookbook_I2C_Slave_Int
    13.7 I2C从机收发操作步骤——中断方式
    使用LPC824模拟一个I2C EEPROM,演示使用中断方式操作I2C从机
    Cookbook_SCT_PWM2
    14.11例程:使用SCT产生2路PWM输出
    初始化SCT,在中断里控制输出信号的占空比实现呼吸灯控制
    Cookbook_SCT_PWM_DMA
    14.12使用SCT+DMA自主实现 LED呼吸灯的例程
    采用DMA更新匹配重装载寄存器的方式调节占空比,实现无中断、无CPU干预的LED呼吸灯功能
    Cookbook_SCT_PWM_Breath
    14.13单独使用SCT自主实现 LED呼吸灯的例程
    仅使用SCT,实现不需CPU和DMA干预的LED呼吸灯
    Cookbook_SCT_QEI
    14.16.3 SCT实现旋转编码器接口的例程
    演示SCT读取旋转编码器的数据,并演示使用IOCON的数字滤波功能做毛刺滤波
    Cookbook_WWDT
    15.3看门狗定时器应用例程
    演示窗口看门狗的功能
    Cookbook_MRT
    16.3多速率定时器(MRT)应用例程
    使用两个MRT的通道产生定时中断控制LED灯的占空比,用ADC采样电位器决定占空比
    Cookbook_MRT_BusStall
    16.4.1总线暂停模式产生PWM波例程
    使用MRT的总线暂停模式产生PWM波形,演示总线暂停模式的功能和对系统的影响
    Cookbook_SysTick
    17.2.2轮询程序实现机械按键消抖
    17.2.3中断方式实现机械按键消抖
    分别用轮询和中断方式实现按键消抖的功能
    Cookbook_ADC
    18.5 ADC应用例程
    使用按键触发ADC转换,中断读出ADC转换结果,演示MODE的功效
    Cookbook_ADC_DMA
    18.6 ADC配合DMA的例程
    使用DMA传输转换结果
    Cookbook_ADC_DMA_Burst
    18.6.1 ADC配合DMA的连续转换传输
    使用DMA的成组模式传输转换结果,ADC使用软件触发

    往期回顾:
    LPC800前生今世 第二章-系列总览
    LPC800前生今世 第一章-概述

    LPC800前生今世 第三章-嵌套式向量中断控制器



    签到签到
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-29 06:25 , Processed in 0.118860 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表