请选择 进入手机版 | 继续访问电脑版
查看: 3846|回复: 4

【S08P闯关赛经验分享】+常用PE组件的应用

[复制链接]
  • TA的每日心情
    奋斗
    前天 16:17
  • 签到天数: 2312 天

    连续签到: 2 天

    [LV.Master]伴坛终老

    56

    主题

    5152

    帖子

    73

    金牌会员

    Rank: 6Rank: 6

    积分
    25629
    最后登录
    2025-4-25
    发表于 2020-7-21 16:27:50 | 显示全部楼层 |阅读模式
    本帖最后由 Angel_YY 于 2020-7-21 16:26 编辑

    在上一篇文章【S08P闯关赛经验分享】+创建工程(PE模式)发布后,有坛友没有用过PE这一图形化配置工具,希望了解更多组件的使用方法。于是就有了本篇文章,一些PE常用组件的应用。
    0、GPIO输出控制LED
    在上一篇中,除了处理器的基本配置外,还简单的了解了一下GPIO的简单用法,本文再做一些了解。
    001.jpg
    除了上一节在Hardware模式下通过处理器界面上添加组件外,还可以在C/C++编码界面直接添加组件。在代码框上方可以看到Components Library,点击后进入Categories标签页,里面列举出了本项目试用的处理器所支持的所有PE组件。我们找到BitIO组件,双击就可以在左侧组件列表中添加了一个BitIO口。
    002.jpg
    此时双击此组件,进入该组件的属性配置界面,右侧选择Advanced,显示更多可配置信息,Component name处可以自己更改组件名称,这里修改为LED1,Pin选择开发板原理图上对应的GPIO口,这里为PTE7,Direction选择输出,初始化选择1,这样LED1默认是熄灭状态。
    003.jpg
    在组件的Methods标签页,使能NegVal方法(函数),这时左侧LED1组件提供的方法中NegVal方法就处于可用状态。
    004.jpg
    以此添加其他七个LED灯的组件,并设置其属性,完成后点击图中按钮生成PE代码,此时LED就可以通过PE提供的函数进行控制了。
    1、GPIO-KBI(按键控制灯)
    011.jpg
    在组件库列表中找到KBI组件,双击添加到现有工程。
    012.jpg
    设置组件属性,KBI选择KBI1,Pins增加到2个,Pin0管脚设置为PTD4,Pin1管脚设置为PTD5,分别对应原理图上两个按键的GPIO口,中断设置为falling edge,下降沿触发。再次生成PE组件代码。
    013.jpg
    在组件Events标签中可以找到中断处理函数的名称,在项目文件列表中找到Events.c文件,双击打开,可以找到对应的中断处理函数。
    014.jpg
    在Events.c中添加如图代码,其中KB1组件的KB1——GetVBal函数可以直接使用鼠标拖拽到代码区域,函数会自动填写到代码中。
    015.jpg
    在main.c函数中添加如图所示代码。
    016.jpg
    在CodeWarrior的调试图标右侧点击下拉菜单,找到DebugConfigurations,点击进入。
    017.jpg
    找到CodeWarrior下的项目名称相关列表项,点击Debug按钮就可以下载程序到开发板并进入调试模式了。
    018.jpg
    在调试模式下点击绿色三角运行程序,开发板上的代码开始执行。
    019.gif
    在开发板上按两个按键,可以分别控制两个LED灯的电量和熄灭。至此PE的LED灯控制和按键检测驱动正常。
    2、定时器(定时亮灭灯)
    021.jpg
    在组件库中双击TimeInt组件,添加定时中断。
    022.jpg
    在属性设置界面设置中断周期,点击三个点按钮进入详细设置页面。
    023.jpg
    value填写10,单位选择ms,点击OK。
    024.jpg
    相关配置自动填写如属性页面。
    025.jpg
    在Events标签页找到中断服务函数的名称,这个名称也是可以修改的,这里保持默认即可。
    026.jpg
    再次生成PE代码后找到项目文件中的Events.c,其中就可以看到定时中断服务函数已经被列出了。
    027.png
    在该文件中编写如图所示代码,实现两秒为周期的LED等自动点亮和熄灭。
    028.gif
    下载程序到开发板后,可以看到LED灯实现自动亮灭的更替。
    3、PWM (按键控制蜂鸣器)
    031.png
    在组件库列表中双击PWM组件,添加该组件到工程中。
    032.png
    双击该组件进入组件属性编辑页面,PWM or PPGdevice 选择FTM10,period选择1.563KHz,Starting pulse width选择3.126KHz。
    033.png
    方法页面使能Enable和Disable两个方法。
    034.png
    在main.c中编写代码,首先禁用PWM。在主循环中需要蜂鸣器发声的时候使能PWM,设置占空比,这里使用的是50%(32767相对于65535,也就是2^16),延时相应时间后关闭PWM即可。这样通过不同按键就可以实现蜂鸣器不同时间长短的发声。
    4、串口 (串口输出信息到上位机)
    041.png
    在组件库列表中异步串口AsynchroSerial组件,双击添加到工程。
    042.png
    双击组件进入属性配置界面,通道选择SCI2,interrupt serverce 设置为Enabled,输入输出buffer均设置为80字节。接收和发送引脚分别设置为原理图中对应的PTD6和PTD7,波特率设置为115200,在设置波特率的时候可能会有提示,主要是因为容错率默认为1.5%,修改为4.5%即可,如果因为稳定性不想修改容错率,可以使用其他速率,比如9600。设置完成后重新生成PE代码。
    043.png
    在Events.c中添加相应代码,就可以实现字符串的发送了。
    044.png
    下载代码到开发板,使用串口工具接收开发板发送的数据即可。这里需要注意串口号需要在windows的设备管理器中查看并得到。
    5、ADC(采集AD值到上位机)
    051.png
    在组件库列表中找到ADC组件,双击添加到工程。
    052.png
    双击ADC组件进入组件属性配置界面。ADC通道根据需求添加,这里添加了两个,分别对应PTF5对应的ADP13和PTF6对应的ADP14,与开发板原理图相对应。AD转换结果这里使用自动选择,也就是默认的12bits,转换时间选择一个较为合适的值即可。
    053.png
    在组件的方法标签页,使能MeasureChan和GetChanValue两个方法。
    054.png
    在Events.c文件中添加如图所示代码。
    055.png
    在定时中断中添加代码,实现测量结果通过串口发送到上位机,并且启动通道0的测量,这里FALSE参数表示不等待即可返回。
    在AD转换完成中断中,获取AD转结果,并赋值给标记位,以便在定时中断中输出结果。
    需要注意的是,这里获取AD值使用的是GetChanValue函数,这个函数返回的值是原始数据,根据ADC的12bit采样,范围为0~4095。
    056.png
    在上位机上可以看到开发板传送过来的AD值了。
    总结:
    作为NXP(飞思卡尔)传统的开发环境,CodeWarrior的PE功能是很友好的,图形化配置界面完全不用深入学习和了解该处理器的SDK相关函数和寄存器设置,就能够很好的使用处理器提供的各种功能组件了,对于一款处理器的新用户来说极大的缩短的上手时间,用户可以集中精力处理业务逻辑。
    附1:PE中各个组件的使用帮助。
    PE中集成了几乎所有处理器支持的片上设备和通讯接口,组件非常繁多,如何才能正确的使用一个组件呢,在PE中已经集成了相关的帮助文档。
    061.png
    这里以串口发送字符串为例,在串口组件上鼠标右击,出现菜单,选择Help on Component,在codewarrior的右侧会有相应的帮助页面出现。
    062.png
    该帮助页面详细的列举了该组件的相关属性,方法,事件,典型应用等内容。比如想了解串口组件发送字符串的方法,可以点击典型应用连接。
    063.png
    典型应用中列举了该组件的各种应用场景,其中就有Usage of block transfer,使用块方式传输数据。点击该连接获取相应帮助信息。
    064.png
    在该帮助页面,详细描述了该模式的使用方法,组件属性如何设置以及相应函数的使用方法,这样我们就就能快速了解并应用一个组件的相应函数实现相应功能了。
    附2:项目工程代码

    S08PT60_test_20200720-2328.zip (414.72 KB, 下载次数: 1)
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 18:22
  • 签到天数: 1775 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    111569
    最后登录
    2025-4-26
    发表于 2020-7-21 23:05:00 | 显示全部楼层
    这是哪个版本的CW啊?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2023-5-11 17:59
  • 签到天数: 33 天

    连续签到: 1 天

    [LV.5]常住居民I

    16

    主题

    396

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1381
    最后登录
    2023-9-15
    发表于 2020-7-22 08:06:49 | 显示全部楼层
    感谢楼主的辛苦付出,十分感谢。
    今天好忙啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 16:17
  • 签到天数: 2312 天

    连续签到: 2 天

    [LV.Master]伴坛终老

    56

    主题

    5152

    帖子

    73

    金牌会员

    Rank: 6Rank: 6

    积分
    25629
    最后登录
    2025-4-25
     楼主| 发表于 2020-7-22 11:33:02 | 显示全部楼层
    stm1024 发表于 2020-7-21 23:05
    这是哪个版本的CW啊?

    CW for MCU v11.1
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2023-12-24 19:50
  • 签到天数: 56 天

    连续签到: 1 天

    [LV.5]常住居民I

    7

    主题

    95

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    374
    最后登录
    2023-12-24
    发表于 2020-8-2 22:01:13 | 显示全部楼层
    学到了
    哎...今天够累的,签到来了~
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-4-27 18:34 , Processed in 0.127379 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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