一、SPI的板级初始化
在板级初始化文件board-am335xevm.c中有对SPI的初始化操作函数spi_init,初始化了SPI引脚和spi_board_info结构体:
static void spi_init(int evm_id, int profile)
{
setup_pin_mux(spi1_pin_mux);
spi_register_board_info(am335x_spi1_slave_info,ARRAY_SIZE(am335x_spi1_slave_info));
return;
}

spi引脚功能初始化:
static struct pinmux_config spi1_pin_mux[] = 
{{"mii1_col.spi1_sclk", OMAP_MUX_MODE2 | AM33XX_PULL_ENBL| AM33XX_INPUT_EN},{"mii1_crs.spi1_d0", OMAP_MUX_MODE2 | AM33XX_PULL_ENBL| AM33XX_PULL_UP | AM33XX_INPUT_EN},{"mii1_rxerr.spi1_d1", OMAP_MUX_MODE2 | AM33XX_PULL_ENBL| AM33XX_INPUT_EN},{"rmii1_refclk.spi1_cs0", OMAP_MUX_MODE2 | AM33XX_PULL_ENBL| AM33XX_PULL_UP | AM33XX_INPUT_EN},{NULL, 0},
};spi_board_info结构体:
static struct spi_board_info am335x_spi1_slave_info[] = {{ .modalias      = "spidev",                         //要匹配SPI驱动的名称.max_speed_hz  = 48000000,   //最高支持的频率.bus_num       = 2,                      //使用的总线控制器.chip_select   = 0,                       //片选数量,,.mode = SPI_MODE_1,             //SPI的工作模式},
};

二、匹配SPI驱动
在spi.c文件中,找到一个spi_driver结构体,
static struct spi_driver spidev_spi_driver = {
.driver = {
.name = “spidev”, //驱动的名称
.owner = THIS_MODULE, //归属
},
.probe = spidev_probe, //匹配函数
.remove = __devexit_p(spidev_remove),
};

这个spi_driver结构体是在spidev_init函数中被调用的:
static int __init spidev_init(void)
{int status;BUILD_BUG_ON(N_SPI_MINORS > 256);     ///它的作用是如果括号内为真则编译出错,,防止出错的一种手段status = register_chrdev(SPIDEV_MAJOR, "spi", &spidev_fops);   //注册了一个字符设备,名字叫 ”spi“   这个很重要,后面有用!!!if (status < 0)return status;spidev_class = class_create(THIS_MODULE, "spidev");   ////创建了一个类,名字叫“spidev”if (IS_ERR(spidev_class)) {unregister_chrdev(SPIDEV_MAJOR, spidev_spi_driver.driver.name);   //创建类不成功, 卸载“spi”这个字符设备return PTR_ERR(spidev_class);}status = spi_register_driver(&spidev_spi_driver);   //注册了spi_driver 结构体这个驱动if (status < 0) {class_destroy(spidev_class);   //不成功销毁类unregister_chrdev(SPIDEV_MAJOR, spidev_spi_driver.driver.name);   ///注销字符设备}return status;
}最关键的匹配过程在spidev_probe这个函数中实现:
static int __devinit spidev_probe(struct spi_device *spi)
{struct spidev_data *spidev;int   status;unsigned long  minor;spidev = kzalloc(sizeof(*spidev), GFP_KERNEL);   ///在内核空间分配一点内存if (!spidev)return -ENOMEM;spidev->spi = spi;spin_lock_init(&spidev->spi_lock);    //初始化一个自旋锁mutex_init(&spidev->buf_lock);       //初始化一个互斥锁INIT_LIST_HEAD(&spidev->device_entry);   //初始化spidev驱动头节点mutex_lock(&device_list_lock);    //加上一个互斥锁,现在谁都不能访问我加锁的资源,除非老子解锁了minor = find_first_zero_bit(minors, N_SPI_MINORS);   //找到一个空位置生成一个设备号if (minor < N_SPI_MINORS) {struct device *dev;spidev->devt = MKDEV(SPIDEV_MAJOR, minor);    //根据设备号转换一下dev = device_create(spidev_class, &spi->dev, spidev->devt,   spidev, "spidev%d.%d",  spi->master->bus_num, spi->chip_select);    //创建设备status = IS_ERR(dev) ? PTR_ERR(dev) : 0;    ///设备指针有没有指向内核最后一页,是的话就返回错误指针} else {dev_dbg(&spi->dev, "no minor number available!\n");   //输出调试信息status = -ENODEV;}if (status == 0) {   //如果设备指针没有错误set_bit(minor, minors);          //设置一下list_add(&spidev->device_entry, &device_list);    //添加到设备列表中}mutex_unlock(&device_list_lock);       //老子把设备列表解锁了,你们随便来if (status == 0)spi_set_drvdata(spi, spidev);   ///设置参数elsekfree(spidev);return status;
}

三、SPI设备操作驱动:设备注册完了,该给用户空间提供操作接口了吧
细心的小伙伴会发现在spidev_init函数中有这么个东东:register_chrdev(SPIDEV_MAJOR, “spi”, &spidev_fops);里面的“spi”是谁 和匹配呢?他是和spi的控制器去匹配的,就是spi_board_info中的那个bus_num号,这部分的内容见另一篇文章,这里就不多说了,那还有个spidev_fops结构体是这里的猪脚:
static const struct file_operations spidev_fops = {
.owner = THIS_MODULE, //所有者
.write = spidev_write, //写操作
.read = spidev_read, //读操作
.unlocked_ioctl = spidev_ioctl, //
.compat_ioctl = spidev_compat_ioctl,
.open = spidev_open,
.release = spidev_release,
.llseek = no_llseek,
};

写操作,没什么好说的,直接看代码:
spidev_write(struct file *filp, const char __user *buf,  size_t count, loff_t *f_pos)
{struct spidev_data *spidev;ssize_t   status = 0;unsigned long  missing;if (count > bufsiz)return -EMSGSIZE;spidev = filp->private_data;mutex_lock(&spidev->buf_lock);   //缓冲区加锁missing = copy_from_user(spidev->buffer, buf, count);   //把数据从用户空间复制到内核空间if (missing == 0) {status = spidev_sync_write(spidev, count);     //同步一下消息} elsestatus = -EFAULT;mutex_unlock(&spidev->buf_lock);     ///缓冲区解锁return status;
}spi读操作:
spidev_read(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
{struct spidev_data *spidev;ssize_t   status = 0;if (count > bufsiz)return -EMSGSIZE;spidev = filp->private_data;mutex_lock(&spidev->buf_lock);      ///加锁status = spidev_sync_read(spidev, count);       //同步消息if (status > 0) {unsigned long missing;missing = copy_to_user(buf, spidev->buffer, status);      //把数据从内核空间到用户空间if (missing == status)status = -EFAULT;elsestatus = status - missing;}mutex_unlock(&spidev->buf_lock);     //解锁return status;
}spidev_ioctl函数,最重要的SPI控制函数,对SPI的配置都在这里完成:
spidev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{int   err = 0;int   retval = 0;struct spidev_data *spidev;struct spi_device *spi;u32   tmp;unsigned  n_ioc;struct spi_ioc_transfer *ioc;if (_IOC_TYPE(cmd) != SPI_IOC_MAGIC)    /* Check type and command number */return -ENOTTY;/* Check access direction once here; don't repeat below.* IOC_DIR is from the user perspective, while access_ok is* from the kernel perspective; so they look reversed.*/if (_IOC_DIR(cmd) & _IOC_READ)err = !access_ok(VERIFY_WRITE,  (void __user *)arg, _IOC_SIZE(cmd));if (err == 0 && _IOC_DIR(cmd) & _IOC_WRITE)err = !access_ok(VERIFY_READ,   (void __user *)arg, _IOC_SIZE(cmd));if (err)return -EFAULT;/* guard against device removal before, or while,* we issue this ioctl.*/spidev = filp->private_data;spin_lock_irq(&spidev->spi_lock);     //禁止内核抢占,且关闭本地中断spi = spi_dev_get(spidev->spi);         //获取设备spin_unlock_irq(&spidev->spi_lock);    //解锁if (spi == NULL)return -ESHUTDOWN;/* use the buffer lock here for triple duty:*  - prevent I/O (from us) so calling spi_setup() is safe;*  - prevent concurrent SPI_IOC_WR_* from morphing*    data fields while SPI_IOC_RD_* reads them;*  - SPI_IOC_MESSAGE needs the buffer locked "normally".*/mutex_lock(&spidev->buf_lock);                   //加互斥锁switch (cmd) {/* read requests */case SPI_IOC_RD_MODE:     // 读模式retval = __put_user(spi->mode & SPI_MODE_MASK,  (__u8 __user *)arg);       //内核空间数据传到用户空间break;case SPI_IOC_RD_LSB_FIRST:       //低位在前retval = __put_user((spi->mode & SPI_LSB_FIRST) ?  1 : 0, (__u8 __user *)arg);break;case SPI_IOC_RD_BITS_PER_WORD:       // 读取数据长度retval = __put_user(spi->bits_per_word, (__u8 __user *)arg);break;case SPI_IOC_RD_MAX_SPEED_HZ:      //最大速率retval = __put_user(spi->max_speed_hz, (__u32 __user *)arg);break;case SPI_IOC_WR_MODE:   //写模式retval = __get_user(tmp, (u8 __user *)arg);       /  /用户空间到内核空间if (retval == 0) {u8 save = spi->mode;if (tmp & ~SPI_MODE_MASK) {retval = -EINVAL;break;}tmp |= spi->mode & ~SPI_MODE_MASK;spi->mode = (u8)tmp;retval = spi_setup(spi);   //设置if (retval < 0)spi->mode = save;elsedev_dbg(&spi->dev, "spi mode %02x\n", tmp);}break;case SPI_IOC_WR_LSB_FIRST:   ///低位在前retval = __get_user(tmp, (__u8 __user *)arg);if (retval == 0) {u8 save = spi->mode;if (tmp)spi->mode |= SPI_LSB_FIRST;elsespi->mode &= ~SPI_LSB_FIRST;retval = spi_setup(spi);if (retval < 0)spi->mode = save;elsedev_dbg(&spi->dev, "%csb first\n",  tmp ? 'l' : 'm');}break;case SPI_IOC_WR_BITS_PER_WORD:  //字长retval = __get_user(tmp, (__u8 __user *)arg);if (retval == 0) {u8 save = spi->bits_per_word;spi->bits_per_word = tmp;retval = spi_setup(spi);if (retval < 0)spi->bits_per_word = save;elsedev_dbg(&spi->dev, "%d bits per word\n", tmp);}break;case SPI_IOC_WR_MAX_SPEED_HZ:      //速率retval = __get_user(tmp, (__u32 __user *)arg);if (retval == 0) {u32 save = spi->max_speed_hz;spi->max_speed_hz = tmp;retval = spi_setup(spi);if (retval < 0)spi->max_speed_hz = save;elsedev_dbg(&spi->dev, "%d Hz (max)\n", tmp);}break;default:/* segmented and/or full-duplex I/O request */if (_IOC_NR(cmd) != _IOC_NR(SPI_IOC_MESSAGE(0))  || _IOC_DIR(cmd) != _IOC_WRITE) {retval = -ENOTTY;break;}tmp = _IOC_SIZE(cmd);if ((tmp % sizeof(struct spi_ioc_transfer)) != 0) {retval = -EINVAL;break;}n_ioc = tmp / sizeof(struct spi_ioc_transfer);if (n_ioc == 0)break;ioc = kmalloc(tmp, GFP_KERNEL);if (!ioc) {retval = -ENOMEM;break;}if (__copy_from_user(ioc, (void __user *)arg, tmp)) {kfree(ioc);retval = -EFAULT;break;}retval = spidev_message(spidev, ioc, n_ioc);kfree(ioc);break;}mutex_unlock(&spidev->buf_lock);     /解锁spi_dev_put(spi);     //释放掉return retval;
}设备打开函数:
static int spidev_open(struct inode *inode, struct file *filp)
{struct spidev_data *spidev;int   status = -ENXIO;mutex_lock(&device_list_lock);list_for_each_entry(spidev, &device_list, device_entry) {         // 遍历列表if (spidev->devt == inode->i_rdev) {status = 0;break;}}if (status == 0) {if (!spidev->buffer) {spidev->buffer = kmalloc(bufsiz, GFP_KERNEL);if (!spidev->buffer) {dev_dbg(&spidev->spi->dev, "open/ENOMEM\n");status = -ENOMEM;}}if (status == 0) {spidev->users++;filp->private_data = spidev;nonseekable_open(inode, filp);          ////  不支持文件偏移,不要使用lseek}} elsepr_debug("spidev: nothing for minor %d\n", iminor(inode));mutex_unlock(&device_list_lock);return status;
}设备释放函数:
static int spidev_release(struct inode *inode, struct file *filp)
{struct spidev_data *spidev;int   status = 0;mutex_lock(&device_list_lock);spidev = filp->private_data;filp->private_data = NULL;spidev->users--;if (!spidev->users) {int  dofree;kfree(spidev->buffer);spidev->buffer = NULL;spin_lock_irq(&spidev->spi_lock);dofree = (spidev->spi == NULL);spin_unlock_irq(&spidev->spi_lock);if (dofree)kfree(spidev);}mutex_unlock(&device_list_lock);return status;
}

好了,SPI的驱动到此分析完毕。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. OSS 上传文件 报 Invalid according to Policy: Policy expired

    请求报403 ,阿里工单,回复policy 超时。我试用了大部门解决方案,最终是linux没联网。。。。。太尴尬了。联网请参考 :https://blog.csdn.net/hochoy/article/details/80697454 中 网络配置部分。如果不是联网的问题,解决措施--步骤:1、 查看系统时间,更新到最新网络时间…...

    2024/4/28 18:59:43
  2. failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not prope

    我这个错误是在es 其中失败的时候报出来的:Caused by: java.security.UnrecoverableKeyException: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded. Such issues can arise if a bad key is used during d…...

    2024/4/27 22:17:58
  3. Atcoder Beginner Contest 173 E

    题意: 给定一个长度为nnn的序列aaa,∣ai∣≤109|a_i|\leq10^9∣ai​∣≤109,从中选择k(k≤n)k(k\leq n)k(k≤n)个数,使得答案最大,问最大答案是最少。 题解1: 模拟就完事了,考虑完所有情况,1A1A1A是不可能的,大概需要考虑的就是kkk为奇数和偶数的情况吧。 代码: #inc…...

    2024/4/27 21:56:23
  4. androidQ(10.0) 读取蓝牙设备当前电量并显示

    效果图 华为手机顶部状态栏我们客制化后最终效果实现步骤 1、获取蓝牙设备连接成功后的电量值 2、跟踪蓝牙图标显示流程 3、制作蓝牙带电量图标 4、获取电量后显示对应电量值图标 文件修改清单vendor/mediatek/proprietary/packages/apps/SystemUI/res/drawable/ic_bluetooth_c…...

    2024/4/28 12:45:59
  5. 百元买百鸡

    一 题目: 百钱买百鸡问题:公鸡每只5元,母鸡每只3元,小鸡3只一元。现有100元钱要求买100只鸡,问小鸡、公鸡、母鸡各多少只? 二 代码 代码1: public class Testgu { public static void main(String[] args) {// TODO Auto-generated method stubint x; int y; int z; int…...

    2024/4/20 14:30:20
  6. mysql-乱码问题

    彻底解决 Mysql 乱码 彻底解决 MySQL 中的乱码问题 下图是此文的阅读总结。 图解分析涉及到字符集的部分终端使用的字符集 操作系统使用的字符集 mysql 数据库使用的一系列字符集。 不同操作系统终端处理字符方法不同。Reference彻底解决 MySQL 中的乱码问题...

    2024/4/28 16:36:04
  7. 使用JAVA快捷键无法查看源码(提示:SOURCE NOT FOUND)

    原因:JDK目录下丢失src.zip文件。文件源:链接:https://pan.baidu.com/s/1vkA5ar8oB0MZ1u72Id_pKA 提取码:z7y8 处理步骤:1、将src.zip文件保存在jre文件目录下图1-12、在eclipse 中点击Window——>preference——>java——>Installed JREs图1-23、选择,添加图1…...

    2024/4/28 0:07:53
  8. Spring Boot对静态变量@Value注入默认值

    通常我们在application.properties中配置属性值,然后通过@Value在实例化的类中进行注入。比如application.properties中配置为: server.url=127.0.0.1 1 那么在代码中使用如下方式便进行注入: @Value("${server.url}") private String serverUrl; 1 2 但如果某些属…...

    2024/4/28 2:05:01
  9. STM32 嵌入式开发学习笔记六 :串口通信

    本文转载自:https://www.cnblogs.com/isakovsky/p/11437355.html和https://www.cnblogs.com/isakovsky/p/11444056.html,笔者将讲解STM32与外部设备通过串口通信的方式。 所谓串口通信,其实是一个类似于计算机网络的概念,它有物理层,比如规定用什么线通信,几伏特算高电平…...

    2024/4/28 1:38:31
  10. C++加载PB模型文件

    C++加载PB模型OS:Ubantu18.04 Tensorflow动态库版本:Tensorflow2.1 OpenCV版本:3.7 cmake:3.10.2MakeLists.txt cmake_minimum_required(VERSION 2.8.8) project(demo)set(CMAKE_CXX_STANDARD 11) set(tensorflow_path /home/tensorflow) set(current_project /home/yuxiub…...

    2024/4/28 4:13:52
  11. ORM框架-----mybatis的环境配置

    ORM Object-Relation Mapping框架 Mybatis---->ibatis 又灵活,又严谨,而且扩展性还高 SQL Hibernate ----->巨型项目 HQL JPA---->太过于灵活 Java所有的ORM框架,基本上都是对于JDBC的一种封装。 Mybatis的配置文件 使用mybatis需要先导入mybatis的jar包。…...

    2024/4/28 4:23:19
  12. 公网用户通过NAT Server访问内部服务器

    示例图 一.实验目的 1.配置公网用户通过NAT Server访问内部服务器 二.注意事项 1.配置NAT Server时注意映射的IP地址 2.由于安全策略的配置,只能由外到服务器的单方向访问,且只能访问指定的目的地址 三.简单配置 FW1 sysname FW1 # interface GigabitEthernet1/0/1ip address…...

    2024/4/28 18:42:52
  13. 搜索之抓住那头牛(详细分析)

    题目描述农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式: 1、从X移动到X-1或X+1,每次移动花费一分钟 2、从X移动到2*X,每次移动花费一分钟 假设牛没有意识到农夫的行动…...

    2024/4/28 9:28:10
  14. PAT (Basic Level) Practice (中文)1004 成绩排名

    1004 成绩排名 (20分)读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。输入格式:每个测试输入包含 1 个测试用例,格式为第 1 行:正整数 n 第 2 行:第 1 个学生的姓名 学号 成绩 第 3 行:第 2 个学生的姓名 学号 成绩... ... ... 第…...

    2024/4/28 11:46:38
  15. 移动端横向滑动去掉横向滚动条

    移动端去掉横向滚动条 在想要消失滚动条的div最外层加 //段落中的文本不换行 white-space: nowrap; //横向滑动 overflow-x: scroll; //滚动条消失 &::-webkit-scrollbar {display: none; }...

    2024/4/28 15:23:15
  16. 单向循环链表及python实现

    单向循环链表 单链表的一个变形是单向循环链表,链表中最后一个节点的next域不再为None,而是指向链表的头节点。操作is_empty() 判断链表是否为空 length() 返回链表的长度 travel() 遍历 add(item) 在头部添加一个节点 append(item) 在尾部添加一个节点 insert(pos, item) 在…...

    2024/4/28 1:14:59
  17. ODOO13 如何在Many2one字段上进行多条件搜索

    本文实际上是对 _name_search 方法的应用。本文以在Many2one图书借阅人字段上,输入借阅人姓名或借阅人手机号码来搜索借阅人举例说明使用方法。假如我们有这样的需求:有读者(默认读者信息已存在数据库中)前来借阅,图书管理员需要登记借阅信息,在登记信息,选择借阅人时,…...

    2024/4/28 4:58:35
  18. 力扣第12题整数转罗马数字

    package _12整数转罗马数字;import javax.jws.soap.SOAPBinding;public class Solution {public static void main(String[] args) {System.out.println(new Solution().intToRoman(2782));}public String intToRoman(int num) {//存放位置char pos[] = new char[7];pos[0] = I…...

    2024/4/28 6:36:50
  19. python:使用循环找一定范围内的素数

    python:使用循环找一定范围内的素数​ 前言:什么是素数?素数又称质数。只能被1和自身整除,并且不为0和1的数我们称之为素数/质数。相信大家在学习python循环取素数的时候,一定遇到了这样或那样的问题,或者说只会使用for循环取素数。那么今天,给大家讲解一下方法和技巧!…...

    2024/4/17 5:08:18
  20. C语言基础:可变参数

    #include <stdio.h> #include <stdarg.h>double average(int num, ...) {va_list valist;double sum = 0.0;int i;/* 为 num 个参数初始化 valist */va_start(valist, num);printf("%d\n", num);/* 访问所有赋给 valist 的参数 */for (i = 0; i < num…...

    2024/4/16 9:24:44

最新文章

  1. Git 常用命令大全

    &#x1f680; Git安装与基础知识学习 &#x1f310; &#x1f3af; Git作为一款全球开发者广泛使用的分布式版本控制系统&#xff0c;能够有效帮助团队协作并追踪项目历史版本。接下来&#xff0c;我们将详细展开Git的安装流程、基础命令操作、高级用法以及应对常见问题的方法…...

    2024/4/28 19:45:18
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. Python读取文件里内容

    如果要读取一个文件里的内容是 # 文件名&#xff1a;db.txt 1 2 3 4代码如下 import requests f open("db.txt", mode"rb") content f.read() f.close()data content.decode(utf-8)# 存到 list 里 data_list data.split(\r\n) print(data_list)# 结果…...

    2024/4/23 6:37:22
  4. Windows 2008虚拟机安装、安装VM Tools、快照和链接克隆、添加硬盘修改格式为GPT

    一、安装vmware workstation软件 VMware workstation的安装介质&#xff0c;获取路径&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1AUAw_--yjZAUPbsR7StOJQ 提取码&#xff1a;umz1 所在目录&#xff1a;\vmware\VMware workstation 15.1.0 1.找到百度网盘中vmwa…...

    2024/4/24 23:48:40
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/28 13:52:11
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/28 3:28:32
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/26 23:05:52
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/28 13:51:37
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/28 15:57:13
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/28 1:22:35
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/26 19:46:12
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/27 11:43:08
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/27 8:32:30
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57