世界微头条丨RK3588开发板(armsom-w3)之PWM实操
PWM介绍
专栏总目录PWM是脉宽调制(Pulse Width Modulation)的缩写。它是一种用于控制电子设备的技术,通过改变电信号的脉冲宽度来实现对设备的控制。PWM基本概念
PWM信号由一个固定频率的周期性脉冲序列组成,每个脉冲的宽度(持续时间)可以根据需要进行调节。调节脉冲宽度的比例可以改变平均电压或电流的大小,从而实现对设备的控制。
当谈论PWM时,以下三个关键术语经常被提及:
频率(Frequency):PWM信号的频率是指每秒钟内脉冲的数量。
【资料图】
周期(Period):PWM信号的周期是指一个完整脉冲序列所花费的时间。它是频率的倒数,以秒为单位表示。周期可以通过将频率的倒数计算得到,例如,一个10kHz的PWM信号的周期为0.1毫秒(100微秒)。
占空比(Duty Cycle):占空比是指PWM信号中脉冲宽度与周期之间的比例关系。它表示了脉冲在一个周期中所占据的时间比例,通常以百分比表示。占空比为0%意味着脉冲不存在(完全低电平),而占空比为100%表示脉冲持续时间占据了整个周期(完全高电平)。在实际应用中,占空比可以在0%到100%之间任意调整,以实现所需的控制效果。
PWM驱动
pwm驱动是一个通用的驱动,SOC厂家都会在SDK里面默认打开
驱动文件
驱动文件所在位置:
drivers/pwm/pwm-rockchip.c
默认SDK已经加载好了PWM的驱动,下文我们主要注意PWM怎么使用
DTS 节点配置
DTS 配置参考文档
Documentation/devicetree/bindings/pwm/pwm.txt
以下为一个例子的示例
Node name { compatible = "Driver matching character"; pwms = < &pwmX 0 25000 0 >; }; &pwmX { status = "okay"; pinctrl-names = "active"; pinctrl-0 = < &pwmX_pin_pull_down >; };pwms的几个参数说明如下:
参数 1,表示 index (per-chip index of the PWM to request),一般是 0,因为我们 Rockchip PWM 每个chip 只有一个。
参数 2,表示 PWM 输出波形的时间周期,单位是 ns;例如下面配置的 25000 就是表示想要得到的
PWM 输出周期是 40K 赫兹。
参数 3,表示极性,为可选参数;下面例子中的配置为负极性。
PWM使用
PWM 提供了用户层的接口,在 /sys/class/pwm/ 节点下面,PWM 驱动加载成功后,会在/sys/class/pwm/ 目录下产生 pwmchip0 目录;向 export 文件写入 0,就是打开 pwm 定时器0,会产生一个 pwm0 目录,相反的往 unexport 写入 0 就会关闭 pwm 定时器了,同时 pwm0 目录会
被删除,该目录下有以下几个文件:
enable:写入 1 使能 pwm,写入 0 关闭 pwm;
polarity:有 normal 或 inversed两个参数选择,表示输出引脚电平翻转;
duty_cycle:在 normal 模式下,表示一个周期内高电平持续的时间(单位:纳秒),在
reversed 模式下,表示一个周期中低电平持续的时间(单位:纳秒);
period:表示 pwm 波的周期(单位:纳秒);
以下是 pwmchip0 的例子,设置 pwm0 输出频率 100K,占空比 50%, 极性为正极性:
cd /sys/class/pwm/pwmchip0/echo 0 > exportcd pwm0echo 10000 > periodecho 5000 > duty_cycleecho normal > polarityecho 1 > enablePWM应用实例
通常电子设备中应用pwm是比较常见的,比如风扇电机控制,电视背光控制, LED 照明调光、电动工具马达控制、汽车加热器等领域。
这里简单介绍一下pwm控制LED灯实现呼吸灯效果。
呼吸灯需要灯的驱动与PWM的驱动结合,两个驱动之间传递数据,我们可以在驱动中调用其他的驱动。
led是我需要的设备,这个设备用到了pwm,而pwm是用默认的驱动。
硬件上我们在开发板找到具有pwm功能的引脚
设备树的修改如下:
/{breathing_light {compatible = "lhd,breathing_light_test";backlight {pwms = < &pwm8 0 25000 0 >;pwm-names = "breathing_light"; };};};&pwm8 {status = "okay";};写一个驱动。内部在使用PWM子系统。形成了包含驱动的驱动。
示例代码
驱动程序
#include < linux/init.h >#include < linux/module.h >#include < linux/fs.h >#include < linux/cdev.h >#include < linux/uaccess.h >#include < linux/types.h >#include < linux/kernel.h >#include < linux/delay.h >#include < linux/ide.h >#include < linux/errno.h >#include < linux/gpio.h >//#include < asm/mach/map.h >#include < linux/of.h >#include < linux/of_address.h >#include < linux/of_gpio.h >#include < asm/io.h >#include < linux/device.h >#include < linux/platform_device.h >#include < linux/pwm.h >#define RED_LED_DTS_COMPATIBLE "lhd,breathing_light_test" /* 设备树节点匹配属性 */#define LED_PWM_CMD_SET_DUTY 0x01#define LED_PWM_CMD_SET_PERIOD 0x02#define LED_PWM_CMD_SET_BOTH 0x03#define LED_PWM_CMD_ENABLE 0x04#define LED_PWM_CMD_DISABLE 0x05struct led_pwm_param{ int duty_ns; int period_ns;};struct red_led_dev { dev_t dev_no; struct cdev chrdev; struct class *led_class; struct device_node *dev_node; struct pwm_device *red_led_pwm;};static struct led_pwm_param led_pwm;static struct red_led_dev led_dev;static int red_led_drv_open (struct inode *node, struct file *file){ int ret = 0; //pwm_set_periodnnn(led_dev.red_led_pwm, PWM_POLARITY_INVERSED);//设置PWM信号的极性pwm_enable(led_dev.red_led_pwm);//启用指定PWM设备,使其开始输出PWM信号。 printk("red_led_pwm open"); return ret;}static ssize_t red_led_drv_write (struct file *file, const char __user *buf, size_t size, loff_t *offset){ int err; if (size != sizeof(led_pwm)) return -EINVAL;err = copy_from_user(&led_pwm, buf, size); if (err > 0) return -EFAULT;pwm_config(led_dev.red_led_pwm, led_pwm.duty_ns, led_pwm.period_ns);//配置PWM设备的基本参数,如频率、占空比等。 printk("red_led_pwm write");return 1;}static long drv_ioctl(struct file *filp, unsigned int cmd, unsigned long arg){ int ret = 0; void __user *my_user_space = (void __user *)arg; switch (cmd) { case LED_PWM_CMD_SET_DUTY: ret = copy_from_user(&led_pwm.duty_ns, my_user_space, sizeof(led_pwm.duty_ns)); if (ret > 0) return -EFAULT; pwm_config(led_dev.red_led_pwm, led_pwm.duty_ns, led_pwm.period_ns); break; case LED_PWM_CMD_SET_PERIOD: ret = copy_from_user(&led_pwm.period_ns, my_user_space, sizeof(led_pwm.period_ns)); if (ret > 0) return -EFAULT; pwm_config(led_dev.red_led_pwm, led_pwm.duty_ns, led_pwm.period_ns); break; case LED_PWM_CMD_SET_BOTH: ret = copy_from_user(&led_pwm, my_user_space, sizeof(led_pwm)); if (ret > 0) return -EFAULT; pwm_config(led_dev.red_led_pwm, led_pwm.duty_ns, led_pwm.period_ns); break; case LED_PWM_CMD_ENABLE: pwm_enable(led_dev.red_led_pwm); break; case LED_PWM_CMD_DISABLE: pwm_disable(led_dev.red_led_pwm); break; } return 0;}static int red_led_drv_release(struct inode *node, struct file *filp){ int ret = 0; pwm_config(led_dev.red_led_pwm, 0, 5000);//配置PWM设备的基本参数,如频率、占空比等。 printk("led pwm dev close");// pwm_disable(led_dev.red_led_pwm); return ret;}static struct file_operations red_led_drv = {.owner = THIS_MODULE,.open = red_led_drv_open,.write = red_led_drv_write, .unlocked_ioctl = drv_ioctl, .release = red_led_drv_release,};/*设备树的匹配列表 */static struct of_device_id dts_match_table[] = { {.compatible = RED_LED_DTS_COMPATIBLE, }, {}, };static int led_red_driver_probe(struct platform_device *pdev){ int err; int ret; struct device *tdev; struct device_node *child; tdev = &pdev- >dev; child = of_get_next_child(tdev- >of_node, NULL); /* 获取设备树子节点 */if (!child) { return -EINVAL; } led_dev.red_led_pwm = devm_of_pwm_get(tdev, child, NULL); /* 从子节点中获取PWM设备,设备树获取这个设备就可以了 */ if (IS_ERR(led_dev.red_led_pwm)) { printk(KERN_ERR"can"t get breathing_light!!"); return -EFAULT; } ret = alloc_chrdev_region(&led_dev.dev_no, 0, 1, "breathing_light");//动态分配字符设备的主设备号if (ret < 0) {pr_err("Error: failed to register mbochs_dev, err: %d", ret);return ret;}cdev_init(&led_dev.chrdev, &red_led_drv);//初始化字符设备结构体cdevcdev_add(&led_dev.chrdev, led_dev.dev_no, 1);//将已经初始化的字符设备结构体cdev添加到系统中 led_dev.led_class = class_create(THIS_MODULE, "breathing_light");//创建一个设备类(device class)并注册到内核中err = PTR_ERR(led_dev.led_class);if (IS_ERR(led_dev.led_class)) { goto failed1;} tdev = device_create(led_dev.led_class , NULL, led_dev.dev_no, NULL, "breathing_light"); //创建一个设备实例并注册到设备类中 if (IS_ERR(tdev)) { ret = -EINVAL;goto failed2;} printk(KERN_INFO"%s %s line %d", __FILE__, __FUNCTION__, __LINE__); return 0;failed2: device_destroy(led_dev.led_class, led_dev.dev_no); class_destroy(led_dev.led_class);failed1: cdev_del(&led_dev.chrdev);unregister_chrdev_region(led_dev.dev_no, 1); return ret;}int led_red_driver_remove(struct platform_device *dev){ // pwm_disable(led_dev.red_led_pwm); // pwm_free(led_dev.red_led_pwm); printk(KERN_INFO"driver remove %s %s line %d", __FILE__, __FUNCTION__, __LINE__); device_destroy(led_dev.led_class, led_dev.dev_no);class_destroy(led_dev.led_class);unregister_chrdev_region(led_dev.dev_no, 1); cdev_del(&led_dev.chrdev); return 0;}static struct platform_driver red_led_platform_driver = { .probe = led_red_driver_probe, .remove = led_red_driver_remove, .driver = { .name = "lhd,breathing_light_test", .owner = THIS_MODULE, .of_match_table = dts_match_table, //通过设备树匹配 },};module_platform_driver(red_led_platform_driver);MODULE_AUTHOR("LHD");MODULE_LICENSE("GPL");将上述驱动编译为ko文件然后push进3588开发板里面
应用层程序
#include "stdio.h"#include < sys/types.h >#include < sys/stat.h >#include < fcntl.h >#include < unistd.h >#include < stdio.h >#include < string.h >#include < sys/ioctl.h >#include < poll.h >#include < stdint.h >#define DEV_NAME "/dev/breathing_light"#define LED_PWM_CMD_SET_DUTY 0x01#define LED_PWM_CMD_SET_PERIOD 0x02#define LED_PWM_CMD_SET_BOTH 0x03#define LED_PWM_CMD_ENABLE 0x04#define LED_PWM_CMD_DISABLE 0x05struct led_pwm_param { int duty_ns; int period_ns;};void sleep_ms(unsigned int ms){ struct timeval delay;delay.tv_sec = 0;delay.tv_usec = ms * 1000; select(0, NULL, NULL, NULL, &delay);}int main(int argc, char **argv){ int fd; int ret; /* 2. 打开文件 */fd = open(DEV_NAME, O_RDWR | O_NONBLOCK); // | O_NONBLOCKif (fd < 0){printf("can not open file %s, %d", DEV_NAME, fd);return -1;} int buf = 3;struct led_pwm_param led_pwm;led_pwm.duty_ns = 500;led_pwm.period_ns = 5000; write(fd, &led_pwm, sizeof(led_pwm)); sleep_ms(3000);while(1){if(led_pwm.duty_ns<=500){while(led_pwm.duty_ns< led_pwm.period_ns){ioctl(fd, LED_PWM_CMD_SET_DUTY, &led_pwm.duty_ns);sleep_ms(50);led_pwm.duty_ns += 300;}}else{while(led_pwm.duty_ns > 500){ioctl(fd, LED_PWM_CMD_SET_DUTY, &led_pwm.duty_ns);sleep_ms(50);led_pwm.duty_ns -= 300;}}}close(fd); return 0;}使用3588自带的编译器将用户程序编译进开发板
prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc apptest_breathing_light_.c -o testpwm
adb push path/testpwm /userdata
chmod 777 testpwm
./testpwm
最后可以看到灯明灭交替的效果
审核编辑:汤梓红
标签:
电脑
-
内存条价格暴涨,电脑组装涨价一至两千元,业内人士:可能还会涨,非刚需不建议买近期以来,内存条价格暴涨,有人将内存条比作黄金,甚至称其为理财产品,引发广泛关注。伴随而来的,是...
-
家人刷脸能解锁iPhone 苹果客服:有概率但低于百万分之一据媒体报道,近日,有网友发帖称,自己的妹妹能够通过面容识别解锁其iPhone。她表示,自己与妹妹并不是...
-
电脑任务栏点击无反应怎么办?电脑任务栏一直转圈圈怎么办?电脑任务栏点击无反应怎么办方法一、卸载补丁1、出现这个原因可能是某个windows10系统补丁更新,导致的...
-
电脑打字乱码怎么办?串口显示乱码的原因有哪些?电脑打字乱码怎么办?1、在桌面上新建一个名为TEST的文本文档并打开。2、我们在文本文档中输入你好两个字...
-
台式机或笔记本摄像头不显示怎么办?电脑弹窗提"无法定位序数"怎么办?台式机或笔记本摄像头不显示怎么办摄像头黑屏问题解决方法:1、检查摄像头是否损坏,如果您的摄像头是内...
硬件
- MBR和GPT的区别有哪些?MBR和GPT怎么选择?
- SSD能用多久在哪看?硬盘中缓存有什么用?
- m.2和SATA区别大吗 ?买M.2 NVME要注意什么?
- 固态硬盘应该怎么选择?m.2固态硬盘和ssd固态硬盘哪款好?
- u盘文件found怎么恢复? 什么叫U盘量产?
- u盘能在手机上用吗?手机如何直接连接u盘?
- u盘建议买多大内存?什么u盘质量最好最耐用?
- u盘发烫怎么办?u盘发烫不识别怎么办?
- U盘分配单元大小怎么设置?电脑不显示u盘盘符怎么办?
- 如何将大于4g的文件拷贝到u盘?U盘显示0字节怎么办?
- 固态u盘和普通u盘有什么区别 ?怎么解除U盘保护?
- 电脑怎么连接打印机?电脑怎么连接电视?
- 电脑怎么连上蓝牙音响?蓝牙耳机连接电脑后没有声音该怎么办?
- 怎么看电脑有没有声卡?结束不了系统进程怎么办?
- 生意社:8月6日福建省邵武市永晶科技有限公司无水氟化氢价格动态
- 播报:8月6日最近多板板块涨幅达2%
- 苏州高新区浒关分区筑月坊建材经营部(个体工商户)成立 注册资本3万人民币 每日资讯
- 扎鲁特旗鲁北镇钧源蓄电池销售部(个体工商户)成立 注册资本15万人民币
- 力勤资源(02245.HK)RKEF项目二期全面达产 年设计产能18.50万金属吨镍铁|最新资讯
- 每日热议!不只暴晒才会中暑 暑期出游健康攻略请收好
- 兆日科技拟购佰内科技控股权,标的系潜在新主旗下资产_今日聚焦
- 【速看料】生意社:8月5日华东地区醋酸乙酯行情平稳运行
- 太古股份公司A(00019.HK)可交换债换股价下调至12.93港元-消息
- 百事通!甘咨询:截至到2026年7月31日收市后公司最新一期股东人数为34842
- 马上立秋,建议前列腺增生患者:1不起,2不碰,3要防,安稳度秋
- OPPO、小米智造基金等入股华芯智源
- 【新要闻】多地暑期托管服务上新 现存托管班相关企业超123万家
- 大脑在睡眠中悄悄切换“收听模式” 天天快报
- 天天资讯:奥地利气温创新高 多地现火情
- 北上资金累计成交额突破249万亿元
- 消息!来自路透的消息,希音已开始进行投资者推介,并可能于8月启动上市程序,寻求300-400亿美元估值
- 无水三氯化镓(5N)商品报价动态(2026-08-04)|每日讯息
- 力合科创:截至2026年7月31日,公司股东户数为38,789户
- 热点聚焦:中国生物制药:TQB3909片新药上市申请获受理
- 热资讯!收评:创业板指放量大涨5.64% 算力硬件股集体反弹
- 焦点速看:陈幸同横扫金娜英采访!谦逊赞对手进步,提卫冕冠军享受赛场!
- 每日报道:新华解码丨新型电力系统建设迎来“十五五”发展路线图
- 7月份中国物流业景气指数继续保持扩张 多式联运发展突出 当前关注
- 消费引擎换挡,“服务”何以接棒?
- 因工作调动,江阴农商行副行长陈开成、倪志娟辞职
- 每日消息!中基健康(000972.SZ):子公司红色番茄拟投资建设直灌酱后包装项目
- 每日焦点!对手伤病满营,巴萨取消与普雷斯顿热身赛
- 焦点消息!每体:维拉接触恩德里克,皇马考虑外租
- 每日速递:商社板块增长安全边际凸显 机构重荐多路标的
- 今日看点:N聚仁收盘上涨272.99% 全天成交4.26亿元
- 今日热讯:骑士紧盯独行侠6400万锋线悍将 库明加索要2千万年薪成备选
- 探访国家级“机器人职校”:从仿真走向现实_每日讯息
- 重点聚焦!铝煤量价共振效应显著 神火股份净利暴增151%
- 每日聚焦:美国10年期国债期货上涨13个点,30年期国债期货上涨22点
- 恒力重工7月承接46艘新造船订单,总金额超300亿元-焦点关注
- 申万宏源:AI产业链大波段上涨重启仍需要时间 继续重视非科技方向轮动的投资机会
- 观察:邀你AI为笔,山河为卷!一起踏进徐霞客的未竟之旅
- 多一人还输泰山 海港想要两连胜怎么就这么难?|快报
- 动态焦点:五年规划发布 全国供销合作社将全面升级为农服务
- 每体:阿斯帕斯将赛季末退役,距塞尔塔600场还差28场-短讯
- 金风科技参建Ummbila Emoyeni一期风电项目实现商业运营
- 天气早知道:最高气温35~37℃!山东继续发布高温黄色预警
- 隆福寺消夏夜,建议空腹去逛_每日短讯
- 德米纳尔止步华盛顿赛男单赛场
- 告别!郭艾伦离开广州队,过去两年伤病缠身,结局会像丁彦雨航?_今日热讯
- 德必集团(300947)2026年中报简析:净利润同比下降54.14%-热消息
- 快资讯丨致远新能大宗交易成交6033.12万元
- 生意社氧化镨7月31日均差为-8375.00元/吨 由负向扩大转为缩小|当前资讯
- 高科桥(09963.HK)发盈喜,预期中期股东应占溢利约4000万港元至4400万港元 同比扭亏为盈_精彩看点
- 热点聚焦:四部门:完善金融机构信息披露规则体系,规范信息披露内容、形式、时效等要求
- OD米兰瞄准阿森纳19岁天才恩瓦内里!红黑军团开启引援接触,枪手设回购条款-视点
- 热消息:“一表清”倒计时:个贷新规重塑助贷江湖,部分平台现裁员潮
- 上半年有色金属行业生产稳步增长,有色金属ETF天弘标的指数涨近3%|速看料
- 今日热搜:青花汾20结束两连平 重上370元关口
- 前沿热点:云南锗业(002428)7月30日主力资金净卖出3.88亿元
- 中国银河:融资净偿还2336.68万元,融资余额30.05亿元_实时焦点
- 奥尼尔对文班亚马喊话:你必须生气,孩子
- 小米汽车发布全新技术平台——小米昆仑技术架构 快资讯
- 6-0!赵心童横扫斯诺克大满贯,破解了墨菲开球,给足丁俊晖面子
- 焦点信息:赛力斯: 关于子公司增资扩股的进展公告
- 7月30日港股煤炭行业沽空数据盘点,中国神华、兖矿能源、首钢资源沽空金额位居行业前三-焦点热文
- 中国人民银行副行长宣昌能会见印度尼西亚银行副行长托马斯·吉万多诺 每日消息
- 世体:坎塞洛未按时到利雅得新月报到,正与巴萨谈转会
- 每天一包烟?半年净赚100万,他本该是NBA最强中锋
- 长江十年行|赤水河畔绿意浓:一江清水见证十年蝶变
- 【券商聚焦】中国银河:7月乳业行业供需格局逐渐趋于平衡
- NBA生涯10次入选最佳防守阵容有多难?历史仅5人达成,现役无人上榜
- 波黑联邦2025年旅游业收入增长9%,盈利能力高于全行业平均
- 股票行情快报:安奈儿(002875)7月29日主力资金净卖出259.76万元
- AI医疗进入快车道,年复合增长率超30%!“三巨头”领衔,港股通医疗ETF华宝(159137)放量涨2.66%!
- 中科通达最新公告:股东光谷成长拟减持不超3%股份
- 赤天化(600227)龙虎榜数据(07-29)
- 生意社:7月29日国内钆铕钇稀土价格走势暂稳 即时焦点
- 安宁控股(00128.HK):郑佩敏及汤夏云将获委任为公司执行董事_当前热议
- 港股异动丨汽车股拉升,理想大涨超10%,广汽涨超7%,中国车企“造人”浪潮提速
- 央行今日开展2065亿元7天期逆回购操作、6000亿元隔夜逆回购操作
- Shams:76人将约翰尼-布鲁姆&一次轮交易至快船,换取现金|每日速读
- 卫报:为了签下罗德里,皇马可能需要出售琼阿梅尼;世界体育报:切尔西正向皇马求购前曼联青训A费
- 邯郸市百禾机械设备制造有限公司成立 注册资本100万人民币
- 立昂技术:拟定增募资不超2.55亿元 投资人工智能算力资源池等项目
- 股票行情快报:杭可科技(688006)7月28日主力资金净买入461.26万元
- 普联软件(300996.SZ):股票继续停牌,预计停牌时间不超过3个交易日 实时
- 南京熊猫(600775)龙虎榜数据(07-28)
- 前沿资讯!生意社:7月28日山东地区苯酐市场走势趋稳
- 龙塞罗:我还是希望维尼修斯留队,不过他要降低薪水要求|焦点报道
- 每日热闻!税务总局:上半年工业设备投资总额同比增长9.8%
- 最资讯丨拉什福德几乎100%留在曼联,巴萨已不考虑租借!新球衣号码二选一
- 当前聚焦:7月27日广发国证石油天然气ETF基金份额减少500万份,重仓股杰瑞股份、中国石油、中国海油
- NBA传闻:掘金队与热火队一同成为德玛尔·德罗赞的潜在下家 快播
- 她把1万现钞当废品卖了!民警头顶烈日翻遍“书山”找回
- 股票行情快报:美瑞新材(300848)7月27日主力资金净卖出473.69万元
- 永臻股份:拟4000万元—8000万元回购股份
- “咋办?”杭州女子看着自己买的两块地,原地懵圈:“种的时候没在意,长起来傻眼了——二三十万斤玉米,咋收?咋卖?”
- 今日要闻!生意社:7月27日鲁西化工新戊二醇价格暂稳
- 宁德时代旗下时代绿色能源公司增资至35亿元
- 视讯!东方甄选(01797)盘中拉升11.08% 机构称其品质零售价值有望逐步显现
- 时光里丨我的煤灰与丹青
- 趋势判断怎样估算交易决策更合理? 通讯
- 勇士队传闻:勒布朗·詹姆斯拒绝加盟后,下一步动向
电竞
数码
事件
- 保障生态环境法典实施 最高法发布首个配套司法解释_当前热讯08-06
- 皇马为维尼修斯开出新续约报价 当前关注08-06
- 资讯:阿森纳7500万镑签下纽卡斯卡中场;前阿森纳中卫即将加盟水晶宫08-06
- 恒星科技(002132.SZ)新增一起对外投资,被投资公司为巩义市恒星同盛企业管理合伙企业(有限合伙)08-06
- 中国移动研究院李男:面向运营的低空经济电磁环境构建与网络赋能探索_每日热讯08-05
- 通讯!曝美国男篮为詹皇预留奥运名额!43岁冲第四冠?6数据剑指队史第一08-05
- 热资讯!汉邦高科:公司重组事项正在加期审计中08-05
- 焦点精选!播音主持三个方向暂停招生,中传2027艺考政策重大调整08-05
- 每体:塞尔塔即将租借曼联门将巴因迪尔,包含买断选项_今亮点08-05
- 每日消息!贵阳地铁1、2号线有便民如厕卡,3号线为何没有?|融媒问政・市民关注08-05
- 每日简讯:韩国2027年最低时薪敲定为50.6元08-05
- 精品茅台遭遇三连跌 创近一个月新低08-05
- 8月4日创业板人工智能ETF华夏基金份额增加400万份,重仓股新易盛、中际旭创、天孚通信_每日报道08-05
- 简讯:穆里尼奥彻底失望!皇马天才断崖拉胯,重磅新援就位直接逼走08-05
- 每日速看!周二纽约尾盘,道指期货涨1.98%08-05










