产品选型

ptr单片机 为什么C++标准库中atomic shared_ptr不是lockfree实现?

小编 2024-10-09 产品选型 23 0

为什么C++标准库中atomic shared_ptr不是lockfree实现?

为什么C++标准库中atomic shared_ptr不是lockfree实现?

把 shared_ptr 做成 lock_free,应该是没有技术上的可行性。shared_ptr 比一个指针要大不少:最近很多小伙伴找我,说想要一些C++的资料,然后我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「C++资料从专业入门到高级教程+工具包」,点个关注,全部无偿共享给大家!!!

评论区回复“888”,关注我之后私信回复“666”,即可拿走。

1. 它可以是一个指向成员函数的指针,这货通常比普通指针大一些,有可能大50%或100%,看平台与实现吧;

2. 它可以有自定的释放函数,又多一个指针;

3. 它支持观察者,这个不会是无代价的。

总之,share_ptr 的体积不小,不太可能有哪个平台能够支持这种体量的无锁原子操作。至于自旋锁之类,肯定是不能通用的,否则死锁了算谁的?

基于机智云物联网平台的多功能大棚设计

基于机智云物联网平台的多功能大棚设计

文/李江勇 纪力尧 林晓智

潍坊技术学院

摘要:本文设计并制作了一款基于机智云物联网平台的多功能大棚的控制系统并制作了实物模型。本系统可通过网页端查看历史操作数据,通过手机APP进行对大棚的远程操作。物联网控制可实现远距离对大棚的各种功能的操作,无距离限制。设备配有网络摄像头,可远程观看大棚状态,使农业更加智能化。

【关键词】物联网 前屈伸臂式卷帘机 多点放风机构 PID 恒温 多点温度采集

1 硬件结构

1.1 主控芯片及数据显示采 用 性 能 高、 功 耗 低 的 32 位微控制器 STM32F429 作 为 主 控 芯 片, 主 频 高 达180MHz,能够进行比较高速的运算,使其能和物联网模块进行即时通讯,减少数据丢包的可能。数据显示采用 TFTLCD 电容触摸屏,该触摸屏屏幕分辨率为 800*480,16 位真彩显示,采用 NT35510 驱动,无需外加驱动器,可直接连接单片机进行驱动,屏幕刷新速度可达 78.9 帧 / 秒。

1.2 esp8266_12F WIFI芯片该模块核心处理器 ESP8266 在较小尺寸封装中集成了业界领先的 Tensilica L106 超低功耗 32 位微型 MCU,带有 16 位精简模式,主频支持 80 MHz 和 160 MHz,支持 RTOS,集成 Wi-Fi MAC/BB/RF/PA/LNA 板载天线。

1.3 前屈伸臂式大棚卷帘机构在进行机械结构设计方面,采用独特的前屈伸臂式卷帘机进行对卷帘的驱动,由变速箱和电动机,卷杆和支架三大部分组成,作业原理是经过主机转动卷杆,卷杆直接拉动草苫或保温被,而且拉放均有动力支撑,市场广泛应用。

1.4 多点放风机构放风机构目前棚户大多使用拉线式放风,需要人不断查看棚内的温度以进行大棚放风机构的拉开与关闭,而且放风机构是一体的。本设备的放风机构采用同步带传动带动风口动作,方便快捷,设有两处放风口,当棚内某点温度过高时,可只开启其中一个放风口进行通风降温,而另一处则不用开启,当达到棚内温度设定值时自动关闭放风口或者手机 APP操作关闭,多点的放风机构可有效的控制大棚温度。

设备整体效果图

1.5 多点温度采集目前大棚温度单点采集过于落后,所谓单点采集,就是将 ds18b20 的 DQ 与单片机的一个管脚相连,而多点采集就是将多个 ds18b20并联,因为每个 ds18b20 都有一个独特的 64位序列号,从而允许多个 ds18b20 同时连在一根单总线上。单片机依靠每个温度传感器独有的 64 位片序列号辨认总线上的器件,根据序列号分别进行采集,匹配序列号的程序如 下:void Match_rom(u8 a)// 匹 配 ROM{u8j;DS18B20_Write_Byte(0x55);if(a==1){for(j=0;j<8;j++) D S 1 8 B 2 0 _Write_Byte(ROM1[j]);}if(a==2){for(j=0;j<8;j++) D S 1 8 B 2 0 _Write_Byte(ROM2[j]);}if(a==3){for(j=0;j<8;j++) D S 1 8 B 2 0 _Write_Byte(ROM3[j]);}}

1.6 PID恒温及网络摄像头有效的控制大棚温度对植物的生长是极其重要的,故采用 PID 恒温方式控制执行器件电热丝进行对大棚温度的控制,本设备可在手机 APP 界面进行温度设置。本设备装有网络摄像头,可通过手机APP查看大棚的状态,摄像头亦采用物联网模式,可不受距离限制,随时随地查看,真正实现智能化农业。

1.7 供电方式考虑到制作的为大棚模型,为方便搬运以及不用市电供电,本设备的供电方式采用的是12V蓄电池供电。当本设备应用于实际大棚时,可采用市电 220V 转 12V 的 60W 的开关电源供电,安全可靠。

2 软件设计

2.1 设备与机智云物联网平台的数据交互流程 使用移植机智云GAgent 的 Wi-Fi 模组建立桥梁,使本设备的数据与机智云互联互通。 设备与机智云数据交互的基本数据流。

2.2 Wi-Fi模块传输协议处理

Wi-Fi 芯片与 STM32 的通讯方式为UART,波特率为 9600。传输字节序采用大端编码,即高字节在前,低字节在后,通讯的交互形式采用一问一答,即每条命令需要由接收方给出 ACK 应答确认信息,超时时间为200ms,超时后重发该命令,发送 3 次后不再尝试发送,丢弃该包数据。数据指令由包头(2B)、包长度(2B)、命令(1B)、包序号(1B)、Flags(2B)、有效负载以及校验和(1B)组成。

发送通用协议消息数据程序如下:static int32_t gizProtocolCommonAck(protocolHead_t *head){int32_t ret = 0;protocolCommon_t ack; i f ( N U L L = = head){G I Z W I T S _ L O G ( " E R R :gizProtocolCommonAck data is empty \n");return-1;}memcpy((uint8_t *)&ack, (uint8_t *)head,sizeof(protocolHead_t));ack.head.cmd = ack.head.cmd+1;ack.head.len = exchangeBytes(sizeof(protocolCommon_t)-4);ack.sum = gizProtocolSum((uint8_t *)&ack,sizeof(protocolCommon_t));r e t = u a r t Wr i t e ( ( u i n t 8 _ t * ) & a c k ,sizeof(protocolCommon_t));if(ret < 0){GIZWITS_LOG("ERR: uartwrite error %d \n", ret);}return ret;}

2.3 电机驱动电路及程序控制本设备大棚卷帘机的驱动电机采用的为直流减速电机,通过控制两个端口的信号输入,则可控制大棚卷帘机的打开与关闭。

电路设计图

其驱动程序如下:case EVENT_JUANLIAN: // 卷帘currentDataPoint.valueJUANLIAN =dataPointPtr->valueJUANLIAN;GIZWITS_LOG("Evt: EVENT_JUANLIAN%d \n", currentDataPoint.valueJUANLIAN);if(shou==0){if(0x01 == currentDataPoint.valueJUANLIAN){juan=1;HAL_GPIO_WritePin(GPIOC,GPIO_PIN_1,GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOC,GPIO_ PIN_6,GPIO_PIN_SET);}else{juan=0;HAL_GPIO_WritePin(GPIOC,GPIO_PIN_1,GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_RESET);}} break;

3 结语

本文所要制作的设备是在大棚发展过程中与现实科技相结合的成果。在越来越智能化,信息化的今天,大棚的物联网时代逐渐进入人们的视线,在经过多次实地调研后,加入了上述的功能,以后根据实际产生的问题,可进一步加入到本设备中,具有二次开发能力,真正实现大棚物联网时代的开发与应用。

参考文献[1] 孙 光 宇 , 张 玲 玲 编 著 .Android 物 联 网开发从入门到实战 [M]. 清华大学出版社 ,2014.[2] 刘军编著 . 物联网技术 [M]. 机械工业出版社 ,2007.[3] 刘 火 良 , 杨 森 编 著 .STM32 库 开 发 实 战指南 - 基于 STM32F4[M]. 机械工业出版社 ,2011.

关于机智云

机智云AIoT自助开发平台提供多种在线自动开发工具、多型号Gagent固件(Wi-Fi、GPRS、4G等主流联网方式的固件)、[color=var(--weui-LINK)]多型号MCU代码自动生成器(51、STM32、arduino等)、[color=var(--weui-LINK)]开源跨平台APP SDK(iOS、Android、APiCloud)、[color=var(--weui-LINK)]开源案例和在线教程,以及社区及FAE支持,帮助开发者0成本、快速实现IoT设备远程控制、数据采集分析、设备及用户管理等应用开发,详见:www.gizwits.com

相关问答

关于 单片机 的两道题.1.已知程序执行前有A=02H,SP=52H,(51H)=...

[最佳回答](1)A=02H,SP=52H,(51H)=0FFH,(52H)=0FFH.POPDPH;SP=51HPOPDPL;SP=50HMOVDPTR,#4000HRLA;A=04HMOVB...

【51 单片机 的pc值怎么算?如:已知程序执行前有A=02H,SP=52H,(...

[最佳回答]那你得通过串口通讯,再将串口读出的数据保存,这要编PC机的应用程序的,只给你一个思路

单片机 原理及接口技术1、指出下列指令是否正确.对√错×(1)M...

[最佳回答]把片外地址为2000H单元的数选入片内20H单元MOVDPTR,#2000HMOVXA,@DPTRMOV20H,AEND

单片机 指令INC DPTR的意思?

INCA;A=A+1,仅A中数据加1,不影响标志位INCDPTR;DPTR=DPTR+1,仅DPTR(16位数据指针)中数据加1,不影响标志位,DPTR是16位寄存器,由两个8位寄存(DPH和DPL)...

设计电子时钟 要用AT89S51 单片机 的定时器实现,用4位数码管...

带闹钟智能电子钟源程序2113源程序如5261下:ORG0000H;程序开始入口4102LJMPSTARTORG0003H;外中断0中断程序入口RETIORG000BH;定时器1653T0中断程序.....

设计电子时钟 要用AT89S51 单片机 的定时器实现,用4位数码管...

用21134位数码管显示,用点的闪烁表示秒,就是共有52615位,7段;那么用一整个4102PIO口(8位)去对应7段数据,1653再用另外一个PIO口的部分(全部)管脚去...

不同编程语言最终生成的机器码是否一样?

这就说明,在同样的运行环境下a+b一>c的汇编码、机器码是一致的。同样是32位的a+b一>c,在8位、16位等单片机机上,结果是不一样的。因为指令系统不一样。也就...

从理论上讲, 单片机 最多可扩展多少个并行I/O口?

[最佳回答]这个要根据单片机现有多少个I/O口计算。不同的单片机的I/O个数可能是不同的,有几个的,也有几十个的,多的还有上百的。扩展的I/O数量肯定是有限的...

诸位老铁哪位了解,深圳服务专业的R0膜生产厂家,R0膜如何选??

[回答]需要用一个单片机引脚来控制,这里选择P3.2。原理图修改如下:代码如下:COMEQUP3.2;ORG0000H...为了做消隐处理,共阴极不能直接接地,需要用一个单片...

在沈阳市离职了提取公积金都需要什么手续- 汇财吧专业问答test

[回答]辞职后公积金提取所需材料1.《住房公积金提取审批表》一份(此表需加盖单位公章,提取金额暂不填写)2.申请人身份证(身份证过期由派出所开具户籍证明(...

猜你喜欢