0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PIC32MX470 温湿度计+RTOS+GUI:MHC教程

电子工程师 来源:网络整理 2018-02-01 03:48 次阅读

uCOS-III跑起来了,但是温湿度计和OLED还没到,打算用这段空窗期把串口调出来,顺便熟悉一下这块板卡的外设。在调试串口这一点上不得不吐槽一下PIC的开发板了,以前接触的大多数原厂出品的CortexM开发板(FRDM系列、SAM4N、LPC系列)基本都是将debug接口和调试串口合成到了一个USB口,有的甚至集成了drag&drop功能,用户就用一根USB线就可以完成所有的调试。但是PIC32MX470这块板子的USB debug口只有debug功能,想用调试串口只能再接一根USB转TTL的线,不方便。

先在板子自带的Information sheet上找到串口的管脚,有UART1和UART2,但是无奈我是个硬件老白,连根带针的杜邦线都没有,只有两头都是孔的,只能用X32接口上的USART2了。

1

1. 首先还是先打开MHC(MPLAB Harmony Configurator),找到串口对应的driver选项打开并做相应的配置,我的配置如下

2

但是配置之后串口没有任何输出,在论坛里搜了相关的文章后才发现我这个硬件老白居然连Pin Settings都没有配就想用串口,后来参考了wudianjun2001大侠文章中串口的配置方法

mod=viewthread&tid=57147&highlight=pic32%2Buart

2. 按Information Sheet中的pin对应关系修改了Pin Configurations如下

3

然后生成代码,惊喜地发现使能了RTOS后,生成的USART驱动代码中有了mutex的操作。生成的代码主要包含以下几个源文件,我为了自己的调试打印又加了bsp_ser.c这个文件用来输出字符串

4

学习代码后可知在SYS_Initialize中已经根据用户的配置调用了USART相关的初始化函数

5

所以使用时只需要直接调用drv_usart_mapping.c中的其他API就可以了,我添加的bsp_ser.c和bsp_ser.h中的代码如下

#include “system/common/sys_common.h”

#include “system_config.h”

#include “system_definitions.h”

#include “bsp_ser.h”

static OS_SEM BSP_SerTxWait;

static DRV_HANDLE BSP_SerHandle;

void BSP_Ser_Tx_Callback (const SYS_MODULE_INDEX index);

void BSP_Ser_Init (CPU_INT32U baud_rate)

{

OS_ERR err;

OSSemCreate(&BSP_SerTxWait, “Serial Tx Wait”, 0, &err);

BSP_SerHandle = DRV_USART_Open(DRV_USART_INDEX_0, 0);

DRV_USART_ByteTransmitCallbackSet(BSP_SerHandle, BSP_Ser_Tx_Callback);

DRV_USART_BaudSet(BSP_SerHandle, baud_rate);

}

void BSP_Ser_Tx_Callback (const SYS_MODULE_INDEX index)

{

OS_ERR err;

OSSemPost(&BSP_SerTxWait, OS_OPT_POST_1, &err); /* Post to the semaphore */

}

int BSP_Ser_WrByte (int ch)

{

OS_ERR err;

DRV_USART_WriteByte(BSP_SerHandle, (CPU_INT08U)ch);

OSSemPend(&BSP_SerTxWait, 0, OS_OPT_PEND_BLOCKING, 0, &err);

return ch;

}

void BSP_Ser_WrStr (CPU_CHAR *p_str)

{

OS_ERR err;

if (p_str == (CPU_CHAR *)0) {

return;

}

while ((*p_str) != (CPU_CHAR )0) {

if (*p_str == ASCII_CHAR_LINE_FEED) {

BSP_Ser_WrByte(ASCII_CHAR_CARRIAGE_RETURN);

BSP_Ser_WrByte(ASCII_CHAR_LINE_FEED);

p_str++;

} else {

BSP_Ser_WrByte(*p_str++);

}

}

}

3. 在_SYS_Tasks任务中添加需要串口打印字符的代码

6

后来又看了些文章,并做了实验才发现,其实只需要在MHC中配置好串口生产代码后就可以使用printf了,根本不需要用户自己添加其他的驱动代码

7

串口和板子按如下方式连接,串口打印正常输出

161439tonn257xjz07p0o0

最后扯一点题外话,也是上篇文章最后留的一个梗。使能uCOS之后我就隐约地感觉到,用MHC配置工程,几乎所有的代码只需要在正确配置后点一下Generate Code按钮就出来了,留给用户做的就是按自己的需求写app的代码了。这种移植的活儿在以前都是要消耗数人天甚至数人周的工作,而现在一个新手也可以简单地改改配置就将RTOS移植过来(假如MHC做得更好);这让我不由地感觉到了底层软件工程师的职业生涯危机。尤其在添加了USART驱动之后,更加觉得驱动的工作就只剩下了在IDE里改配置了,因为到目前为止,芯片手册我只看过memory map。这样再发展些时日是不是就不需要做驱动和BSP的工程师了?难道这就是人工智能对码农的影响?

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PIC32MX470
    +关注

    关注

    0

    文章

    5

    浏览量

    1797
收藏 人收藏

    评论

    相关推荐

    温湿度传感器工作原理 温湿度传感器的接线方法

    温湿度传感器是一种用于测量环境温度和相对湿度的装置。它通常用于工业、农业、气象、室内空调等领域。本文将详细介绍温湿度传感器的工作原理和接线方法。 一、温湿度传感器的工作原理
    的头像 发表于 02-14 18:00 4105次阅读

    温湿度变送器HTPC04S说明书 V1

    温湿度变送器HTPC04S说明书(不锈钢温湿度变送器探头)
    发表于 01-22 14:50 0次下载

    4G远程温湿度传感器在仓库中的应用—蜂窝物联

    一个良好的仓储环境需要考虑到温度、清洁度、空气流动、防水、防火等要素,其中以空气温湿度的影响最为重要,仓库内温湿度环境的直接影响到库品的品质与安全,合理控制仓库内的温湿度是做好库品存储的首要工作
    的头像 发表于 01-02 09:36 161次阅读

    Arduino篇—自制温湿度测量仪

    DHT11数字温湿度传感器:DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器
    的头像 发表于 11-02 10:16 777次阅读
    Arduino篇—自制<b class='flag-5'>温湿度</b>测量仪

    基于51单片机和AHT10温湿度传感器的温湿度计源码

    一款基于51单片机和AHT10温湿度传感器的温湿度计源码。
    发表于 10-09 08:39

    高低温试验箱温湿度计的测量原理

    的表示方法有湿度、相对湿度、露点、湿气与干气的比值(重量或体积)等等。 湿度测量方法温湿度计湿度测量从原理上划分有二、三十种之多。但
    的头像 发表于 08-15 18:33 328次阅读

    大数据中心温湿度监控系统解决方案之以太网温湿度传感器

    数据机房服务器数据中心温湿度的解决方案 引言 数据机房是现代企业和组织存储和处理海量数据的关键设施。在这些机房中,服务器承担着运行和存储数据的重要任务。然而,由于服务器的高功耗和密集堆放,温湿度管理
    的头像 发表于 08-02 09:52 798次阅读
    大数据中心<b class='flag-5'>温湿度</b>监控系统解决方案之以太网<b class='flag-5'>温湿度</b>传感器

    防爆型温湿度检测仪

    目前,XKCON祥控环境温湿度检测仪不仅能够在电力环境中进行高精度温湿度监测,在封闭煤场、车间、实验室、药房、库房、仓库、粮仓、酒窖、图书馆、档案馆、文物室等场所中也同样能够精心高精度温湿度监测。
    的头像 发表于 07-17 11:31 628次阅读
    防爆型<b class='flag-5'>温湿度</b>检测仪

    ​什么是温湿度传感器?

    温湿度传感器由于体积小,性能稳定等特点,被广泛应用在生产生活的各个领域。温湿度一体化传感器是采用数字集成传感器做探头,配以数字化处理电路,从而将环境中的温度和相对湿度转换成与之相对应的标准模拟信号
    的头像 发表于 07-07 16:50 723次阅读

    机房温湿度检测仪中应用的温度传感芯片

    机房温湿度监控是运营商的运维部门的重要的工作之一,而且温度控制系统是机房温湿度控制的神经枢纽,在温湿度监控时要保证机房在适宜的环境下让机房能更加稳定。
    的头像 发表于 07-07 09:49 442次阅读
    机房<b class='flag-5'>温湿度</b>检测仪中应用的温度传感芯片

    基于CW32L083设计的超低功耗温湿度计

    基于CW32L083设计的超低功耗温湿度计,可以用电池供电,实现数年超长工作时间。
    的头像 发表于 06-25 12:08 2.6w次阅读
    基于CW32L083设计的超低功耗<b class='flag-5'>温湿度计</b>

    基于PIC18系列单片机的DHT11温湿度采集系统设计

    基于PIC18系列(PIC18F4520)单片机+DHT11的温湿度采集系统的设计与制作(Proteus仿真部分)
    的头像 发表于 06-16 16:36 686次阅读
    基于<b class='flag-5'>PIC</b>18系列单片机的DHT11<b class='flag-5'>温湿度</b>采集系统设计

    英飞凌PSoc62超低功耗温湿#超低功耗 #温湿度计

    英飞凌温湿度计
    华仔stm32
    发布于 :2023年06月03日 21:42:59

    英飞凌PSoC62 实现超低功耗温湿度计

    一款超低功耗的温湿度计
    的头像 发表于 06-03 10:13 1967次阅读
    英飞凌PSoC62 实现超低功耗<b class='flag-5'>温湿度计</b>

    CW32饭盒派开发板 日历温湿度计

    CW32创建日历+温湿度计
    的头像 发表于 05-27 14:07 4184次阅读
    CW32饭盒派开发板 日历<b class='flag-5'>温湿度计</b>