【全球新視野】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
最后可以看到燈明滅交替的效果
審核編輯:湯梓紅
標簽:
電腦
-
ChatGPT原理是什么?ChatGPT對人類有哪些影響?ChatGPT發布以來,就迅速火出了圈,相當對的用戶都在下載體驗,對這個很感興趣,同時用戶們對ChatGPT實...
-
ChatGPT是什么意思?ChatGPT國內能用嗎?ChatGPT是什么意思ChatGPT是聊天機器人。嚴格來說,這是一種基于openAI的大規模學習語言,基于接收到的...
-
word自動生成目錄不全怎么辦?mathtype如何嵌入到word中?word自動生成目錄不全怎么辦word是通過識別標題的級別來自動生成目錄的,如果部分標題未設置級別,就會...
-
夸克網盤的文件怎么保存到百度網盤?微軟edge瀏覽器新功能怎么用?夸克網盤的文件怎么保存到百度網盤很多小伙伴為了方便下載并保存自己組要得各種資源,會進行各類網盤的...
-
word設置圖片環繞方式為四周型的方法有哪些?excel表格灰色不顯示內容怎么辦?word設置圖片環繞方式為四周型的方法word文檔的豐富功能想必大家是有目共睹的,大家在使用Word文檔編輯...
硬件
- 加熱鼠標墊會不會導致鍵盤失靈?發熱鼠標墊使用有哪些注意事項?
- 鼠標上的按鍵分別有什么功能?鼠標六個按鍵功能介紹
- 自己怎么組裝電腦?需要哪些配件?
- 移動硬盤不識別怎么辦?怎么解決移動硬盤不識別問題?
- 移動硬盤什么品牌質量最好?移動硬盤品牌推薦
- 有哪些便宜好用的機械鍵盤?機械鍵盤推薦
- 國產游戲手柄哪個牌子好?好用國產游戲手柄推薦
- 有哪些好用u盤推薦?u盤質量品牌排行榜前十名
- 怎么查看惠普筆記本是否支持SSD加速?有哪些方法?
- 聯想tinkpad t410開機失敗報錯fan error怎么辦?怎么拆機清理散熱器?
- 筆記本電腦怎么樣設置顯卡硬件加速?主板加顯卡可以提速嗎?
- g3250和i33240哪個好?CPUG3250升級可以升級成什么?
- 華碩水立方裝什么主板?華碩z590p主板可以裝幾張顯卡?
- 七彩虹b560m主板帶藍牙嗎?win10系統怎么連藍牙低音炮?
- 天津夏季達沃斯論壇期間將舉辦主題城市論壇_全球時訊
- 關于鐵路計次票、定期票 如何購買使用
- 新資訊:老百姓的“柴米油鹽”不易拍
- 教師專業技能方面存在問題(教師專業技能)
- 超好聽的qq分組符號(qq分組名稱唯美帶符號) 天天速看
- 12月去云南旅游必備物品清單表(12月去云南旅游必備物品)
- 今熱點:蜀中有杜處士好書畫的翻譯(蜀中有杜處士好書畫所寶以百數翻譯)
- 匯總記賬憑證賬務處理程序的缺點之一是_匯總記賬憑證賬務處理程序的缺點有-新視野
- 王子和小燕子故事_驢子和小燕子的故事_世界熱頭條
- 南寧市武鳴屬于哪個區_廣西武鳴縣屬于南寧市嗎
- 龍濤紫郡苑的房價_龍濤紫郡苑 天天熱文
- 金山軟件管家價格_金山軟件管家是什么
- 9成產品“賺到錢”!部分債基開始限購_世界最資訊
- 全球熱資訊!國鐵集團今起在12306網站(含App)試行在線選鋪服務
- 1000萬元家電補貼!先報名再現場選購,報名截至6月17日!2023齊魯工惠·三源家電“家電惠工”活動啟動
- 世界熱文:中國吸引跨國公司的不單是大市場
- 當前視訊!直擊2023中國經濟傳媒大會丨中國經濟體制改革研究會副會長樊綱:復蘇正在進行中 我們需要耐心
- 定位膽出0買03697碼穩賺技巧,投資高手必備! 熱資訊
- 豬飼料喂牛好不好(對牛的影響有哪些)_百事通
- 小龍蝦飼料的配比(如何選擇小龍蝦飼料)
- 鴻均老祖的師傅是誰啊(鴻均)-今日熱門
- 世界快看點丨中國廉潔文化史簡介(中國廉政)
- 【天天熱聞】金陵十二釵判詞及人物(金陵十二釵判詞)
- 小學生法制安全教育主題班會文案(小學生法制安全教育主題班會)|全球獨家
- 世界資訊:RK3588-Camera:MIPI-CSI調試之通路解析
- 環球新消息丨RK3588-WIF/BT調試之AP6256
- 天天觀焦點:旱堿麥成“名片”迎來豐收 鹽堿地特色農業開出“增收花”
- 陜西西安推動“十里灃河”文旅深度融合古老灃河涌動新活力 環球快資訊
- 天天熱門:AI前哨 | Open AI聯合創始人Sam AItman:目前開源不是最佳路徑
- 熱點評!引導行業健康發展 海南省混凝土協會正式成立
- 這個全國區縣級首創活動在東安湖體育公園開幕
- 杯具!上海一小區電動車爆炸起火 家人慘被燒傷:網友吵翻為何電池拿回家充電-全球簡訊
- 【短訊】硅料價格波動大、梧州項目投產延后 沐邦高科轉型“多艱”|直擊業績會
- 入魔夢魘騎士攻略_入魔夢魘騎士 新消息
- 每日頭條!演藝大世界|哼著歌數星星,在南京路步行街“偶遇”一場音樂會
- 廣東省汕尾市政府原副市長鄭俊雄接受審查調查 環球今頭條
- 今日報丨各地稅務部門不斷優化服務 前5個月新辦涉稅經營主體643.5萬戶
- “文根”何以“深種”?看文博會如何尋找嶺南新坐標
- 2023年國家醫保目錄調整征求意見:6月底前獲批藥物均可參與,談判最早9月 焦點精選
- 【新視野】之江實驗室發表研究成果 用計算模型理解大腦視覺機制
- 焦點速看:畝產3500斤!惠州龍門引進香芋南瓜示范種植成功
- 焦點精選!龍騰大灣區|剛剛,粵港澳大灣區龍舟邀請賽開鑼!
- 田間興“混搭” 農業探新路|每日熱門
- 世界微動態丨這就是信心|優化營商環境 各地硬招、實招頻出
- 當前關注:2018年中國人均gdp已達到多少美元?(2018年中國人均gdp已經達到()美元)
- 當前快訊:遺體告別儀式流程和掩口流程(遺體告別儀式流程)
- 電腦很卡反應很慢該如何處理(安卓手機開啟USB調試連接電腦沒反應)
- 報名表制作格式(報名表制作)_環球速看
- 碧血劍電視劇黃圣依版劇情(碧血劍電視劇黃圣依版)
- 魔獸世界采礦升級路線(魔獸世界采礦升級攻略)
- 我的世界如何快速得到烈焰棒指令(我的世界如何快速得到烈焰棒)|即時看
- 天天速訊:空擋是用來干嘛的(空擋有什么用?)
- 新神U要來了!AMD官網發現Threadripper 7900X/PRO 7905WX系列處理器 世界滾動
- 壓力給到X86處理器!蘋果M2 Ultra芯片跑分曝光,多核成績比M1 Ultra高18%-訊息
- 被狼咬死的羊肉能不能吃? 快資訊
- 紅酒配菜配什么?
- 白葡萄酒怎么喝比較好 白葡萄酒怎么喝
- 蘋果手表怎么配對三星折疊手機 蘋果手表怎么配對
- 每日時訊!古體詩和近體詩的區別 律詩和絕句的區別
- 全球要聞:愛聽4g客戶端 愛聽4g電腦版
- 發膜倒膜使用方法_發膜 倒膜
- 衛生間地漏有臭味怎么解決_衛生間地漏
- 嫡出和庶出的區別_嫡出 焦點報道
- 紡錘體在什么時期形成_紡錘體
- 各地稅務部門不斷優化服務 前5個月新辦涉稅經營主體643.5萬戶|今日聚焦
- 環球速讀:全球連線|洪都拉斯外長雷納:期待洪中兩國共促高水平雙邊合作、共拓發展機遇
- 【當前熱聞】華泰證券,北上資金很看好!
- 橡膠走勢解析
- 當前簡訊:路由器如何設置穿墻模式(路由器如何設置)
- 諾基亞3310上市時間(諾基亞3310)
- 蘋果手機越獄了會有什么后果(蘋果手機越獄)
- 前沿熱點:微信公眾賬號登錄入口(微信公眾)
- 傅雨涵和陳忱是誰(傅雨涵)
- 勇闖冰火島第三關(勇闖冰火島阿貍版)-天天新動態
- 2023年6月10日山東省重烷基苯磺酸鈉價格最新行情預測
- 2023年6月10日醇酯十二(成膜助劑)價格最新行情預測_環球時快訊
- 關于鐵路計次票、定期票 如何購買使用
- 科勒電子紙智能馬桶震撼發布 熱點在線
- 機構頻頻調研,快遞行業終于可以樂觀了? 快訊
- 天天觀速訊丨一幀中國|在清代建筑群品川東文化(2023年6月10日)
- 學制苗族銀飾 傳承非遺之美
- 科普圖解 | 筑牢生態屏障!一圖看懂我國防沙治沙新成就 訊息
- realme領導人Madhav Sheth或成為榮耀印度區首席執行官 世界新資訊
- 天天動態:扎克伯格批蘋果首款MR頭顯,酸葡萄心理?
- 【當前熱聞】救軍糧火棘怎么種(火棘救兵糧)
- 微信閱讀2購買路徑 微信閱讀如何購買書籍
- 環球時訊:墨鏡怎么洗(墨鏡如何清洗可以不模糊)
- 怎么洗豬腳(怎樣洗豬腳)
- 【世界聚看點】店長如何管理店鋪貨品_店長如何管理店鋪
- 噬神者第二季_弒神者第二季 今日熱搜
- 要聞速遞:感覺新生兒嗓子有痰呼嚕呼嚕的怎么辦_新生兒嗓子有痰呼嚕呼嚕的怎么辦
- 低價團亂象再起 何以無解?
- 中國吸引跨國公司的不單是大市場
- 多措并舉促進應屆高校畢業生就業 網絡招聘活動忙_當前簡訊
- 在鐵路12306買臥鋪票也可以在線選鋪位了!手把手教你怎么操作-環球新消息
- 環球今亮點!搜救犬被確診淋巴瘤晚期,主人帶它最后一次出門,小鎮居民集體出動陪它散步向它告別
- 全球動態:學制苗族銀飾 傳承非遺之美
- 世界實時:《自然》新研究發現紫外線可誘導罕見白血病發生
- 一季度虧損擴大1.6倍!將要開源節流的蔚來_焦點速看
- 比亞迪、奇瑞領銜 中國SUV市場競爭白熱化
電競
數碼
事件
- 【全球新視野】RK3588開發板(armsom-w3)之PWM實操06-10
- 今日播報!金陵十二釵判詞及人物(金陵十二釵判詞)06-10
- 【快播報】蒙家軍打敗匈奴_蒙家軍06-10
- 看熱訊:45元一杯的網紅現制酸奶,要走喜茶老路?06-10
- 農民畫家陳波那:展家鄉美 繪民族情06-10
- 老黨員串起睦鄰情 端午安康送祝福 環球看點06-10
- 環球消息!廣州市2023年普通高考感謝信06-10
- 原創組圖 | “共建自貿港——遇見·相約夏日”鋼琴音樂會亮相三亞06-10
- 持續開展海洋生物資源高值化利用!青島深耕“蟹藻利用”結“碩果”06-10
- 航行警告!這一海域執行軍事任務,禁止駛入 天天速讀06-10
- 熱門:蒸螃蟹是冷水下鍋還是熱水下鍋_蒸螃蟹小竅門都有哪些06-10
- 【文體市場面面觀】“兩個效益”彰顯文化企業使命擔當|世界快報06-10
- 特朗普再次被起訴,轉頭又去打高爾夫,網友:他和高爾夫是真愛-天天動態06-10
- 清淡飲食吃什么小吃(清淡飲食吃什么)_焦點播報06-10
- 春曉古詩原文解釋及翻譯(春曉古詩原文)_環球時快訊06-10










