五 linux 串口驱动
一.串口结构体
1.串口驱动结构体
struct uart_driver {struct module *owner; //模块所有者const char *driver_name; //驱动名const char *dev_name; //设备名int major; //主设备号int minor; //次设备号int nr; //支持串口个数struct console *cons; //控制台设备struct uart_state *state; //串口状态struct tty_driver *tty_driver; //tty设备
};
2.串口端口结构体
struct uart_port {spinlock_t lock;unsigned long iobase; //io端口基地址unsigned char __iomem *membase; //内存端口基地址unsigned int (*serial_in)(struct uart_port *, int);void (*serial_out)(struct uart_port *, int, int);void (*set_termios)(struct uart_port *,struct ktermios *new,struct ktermios *old);void (*pm)(struct uart_port *, unsigned int state,unsigned int old);unsigned int irq; //中断号unsigned long irqflags; //中断标志unsigned int uartclk;unsigned int fifosize; //fifo大小 unsigned char x_char;unsigned char regshift; //寄存器偏移值 unsigned char iotype; //io访问类型unsigned char unused1;unsigned int read_status_mask;unsigned int ignore_status_mask;struct uart_state *state; //uart_state结构体 struct uart_icount icount; //串口使用计数struct console *cons; //console控制台
#if defined(CONFIG_SERIAL_CORE_CONSOLE) || defined(SUPPORT_SYSRQ)unsigned long sysrq;
#endifupf_t flags;unsigned int mctrl;unsigned int timeout;unsigned int type;const struct uart_ops *ops; //串口操作函数集unsigned int custom_divisor;unsigned int line; //端口号resource_size_t mapbase;struct device *dev; //设备文件unsigned char hub6;unsigned char suspended;unsigned char irq_wake;unsigned char unused[2];void *private_data;
};
3.操作函数集
struct uart_ops {unsigned int (*tx_empty)(struct uart_port *); //发送缓冲区为空void (*set_mctrl)(struct uart_port *, unsigned int mctrl); //设置串口modem控制模式unsigned int (*get_mctrl)(struct uart_port *); //获取串口modem控制模式void (*stop_tx)(struct uart_port *); //停止发送void (*start_tx)(struct uart_port *); //开始发送void (*send_xchar)(struct uart_port *, char ch);void (*stop_rx)(struct uart_port *); //停止接收void (*enable_ms)(struct uart_port *); //使能modem状态信息void (*break_ctl)(struct uart_port *, int ctl);int (*startup)(struct uart_port *); //打开串口void (*shutdown)(struct uart_port *); //关闭串口void (*flush_buffer)(struct uart_port *);void (*set_termios)(struct uart_port *, struct ktermios *new,struct ktermios *old); //设置串口参数void (*set_ldisc)(struct uart_port *, int new);void (*pm)(struct uart_port *, unsigned int state,unsigned int oldstate);int (*set_wake)(struct uart_port *, unsigned int state);const char *(*type)(struct uart_port *);void (*release_port)(struct uart_port *); //释放端口int (*request_port)(struct uart_port *); //请求端口void (*config_port)(struct uart_port *, int); //配置端口int (*verify_port)(struct uart_port *, struct serial_struct *); //校验端口int (*ioctl)(struct uart_port *, unsigned int, unsigned long); //控制
#ifdef CONFIG_CONSOLE_POLLvoid (*poll_put_char)(struct uart_port *, unsigned char);int (*poll_get_char)(struct uart_port *);
#endif
};
4.uart_state
struct uart_state {struct tty_port port;int pm_state;struct circ_buf xmit;struct tasklet_struct tlet;struct uart_port *uart_port;
};
二.串口驱动的注册与注销
注册
int uart_register_driver(struct uart_driver *drv)
{struct tty_driver *normal;int i, retval;BUG_ON(drv->state);drv->state = kzalloc(sizeof(struct uart_state) * drv->nr, GFP_KERNEL); //分配uart_state内存if (!drv->state)goto out;normal = alloc_tty_driver(drv->nr); //分配tty_driverif (!normal)goto out_kfree;drv->tty_driver = normal; //tty_driver和uart_driver捆绑normal->owner = drv->owner; //模块所有者normal->driver_name = drv->driver_name; //驱动名normal->name = drv->dev_name; //设备名normal->major = drv->major; //主设备号normal->minor_start = drv->minor; //次设备号normal->type = TTY_DRIVER_TYPE_SERIAL; //tty类型normal->subtype = SERIAL_TYPE_NORMAL; //tty子类型normal->init_termios = tty_std_termios; //termios结构体normal->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; //设置默认串口信息normal->init_termios.c_ispeed = normal->init_termios.c_ospeed = 9600; //波特率normal->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV;normal->driver_state = drv; tty_set_operations(normal, &uart_ops); //设置tty操作函数集for (i = 0; i < drv->nr; i++) { //初始化uart_statestruct uart_state *state = drv->state + i;struct tty_port *port = &state->port;tty_port_init(port); //初始化tty端口port->ops = &uart_port_ops; //tty端口操作函数集port->close_delay = 500; /* .5 seconds */port->closing_wait = 30000; /* 30 seconds */tasklet_init(&state->tlet, uart_tasklet_action,(unsigned long)state);}retval = tty_register_driver(normal); //注册tty驱动if (retval >= 0)return retval;put_tty_driver(normal); //引用计数
out_kfree:kfree(drv->state);
out:return -ENOMEM;
}
注销
void uart_unregister_driver(struct uart_driver *drv)
{struct tty_driver *p = drv->tty_driver;tty_unregister_driver(p); //注销tty驱动put_tty_driver(p); //减少引用计数kfree(drv->state);drv->tty_driver = NULL;
}
三.端口注册与注销
注册
int uart_add_one_port(struct uart_driver *drv, struct uart_port *uport)
{struct uart_state *state;struct tty_port *port;int ret = 0;struct device *tty_dev;BUG_ON(in_interrupt());if (uport->line >= drv->nr)return -EINVAL;state = drv->state + uport->line; //获取uart_stateport = &state->port; //获取tty_portmutex_lock(&port_mutex);mutex_lock(&port->mutex);if (state->uart_port) {ret = -EINVAL;goto out;}state->uart_port = uport; //设置uart_state->uart_portstate->pm_state = -1;uport->cons = drv->cons; //设置uart_port->cons控制台uport->state = state; //设置uart_port->stateif (!(uart_console(uport) && (uport->cons->flags & CON_ENABLED))) {spin_lock_init(&uport->lock);lockdep_set_class(&uport->lock, &port_lock_key);}uart_configure_port(drv, state, uport); //配置端口tty_dev = tty_register_device(drv->tty_driver, uport->line, uport->dev); //生成tty设备文件/dev/ttyXXXif (likely(!IS_ERR(tty_dev))) {device_init_wakeup(tty_dev, 1);device_set_wakeup_enable(tty_dev, 0);} elseprintk(KERN_ERR "Cannot register tty device on line %d\n",uport->line);uport->flags &= ~UPF_DEAD;out:mutex_unlock(&port->mutex);mutex_unlock(&port_mutex);return ret;
}
uart_configure_port
static void uart_configure_port(struct uart_driver *drv, struct uart_state *state,struct uart_port *port)
{unsigned int flags;if (!port->iobase && !port->mapbase && !port->membase)return;flags = 0;if (port->flags & UPF_AUTO_IRQ) //设置可中断标志flags |= UART_CONFIG_IRQ;if (port->flags & UPF_BOOT_AUTOCONF) { //设置自动配置标志if (!(port->flags & UPF_FIXED_TYPE)) {port->type = PORT_UNKNOWN;flags |= UART_CONFIG_TYPE;}port->ops->config_port(port, flags); //调用uart_port的config_port方法}if (port->type != PORT_UNKNOWN) {unsigned long flags;uart_report_port(drv, port);uart_change_pm(state, 0);spin_lock_irqsave(&port->lock, flags);port->ops->set_mctrl(port, port->mctrl & TIOCM_DTR); //调用uart_port的set_mctrl方法spin_unlock_irqrestore(&port->lock, flags);if (port->cons && !(port->cons->flags & CON_ENABLED)) //若console存在且设置了CON_ENABLED标志register_console(port->cons); //注册控制台设备if (!uart_console(port))uart_change_pm(state, 3);}
}
注销
int uart_remove_one_port(struct uart_driver *drv, struct uart_port *uport)
{struct uart_state *state = drv->state + uport->line;struct tty_port *port = &state->port;BUG_ON(in_interrupt());if (state->uart_port != uport)printk(KERN_ALERT "Removing wrong port: %p != %p\n",state->uart_port, uport);mutex_lock(&port_mutex);mutex_lock(&port->mutex);uport->flags |= UPF_DEAD;mutex_unlock(&port->mutex);tty_unregister_device(drv->tty_driver, uport->line);if (port->tty)tty_vhangup(port->tty);if (uport->type != PORT_UNKNOWN)uport->ops->release_port(uport);uport->type = PORT_UNKNOWN;tasklet_kill(&state->tlet);state->uart_port = NULL;mutex_unlock(&port_mutex);return 0;
}
四.串口对应的tty_driver的操作函数集
1.tty的操作函数集uart_ops
static const struct tty_operations uart_ops = {.open = uart_open,.close = uart_close,.write = uart_write,.put_char = uart_put_char,.flush_chars = uart_flush_chars,.write_room = uart_write_room,.chars_in_buffer= uart_chars_in_buffer,.flush_buffer = uart_flush_buffer,.ioctl = uart_ioctl,.throttle = uart_throttle,.unthrottle = uart_unthrottle,.send_xchar = uart_send_xchar,.set_termios = uart_set_termios,.set_ldisc = uart_set_ldisc,.stop = uart_stop,.start = uart_start,.hangup = uart_hangup,.break_ctl = uart_break_ctl,.wait_until_sent= uart_wait_until_sent,
#ifdef CONFIG_PROC_FS.proc_fops = &uart_proc_fops,
#endif.tiocmget = uart_tiocmget,.tiocmset = uart_tiocmset,.get_icount = uart_get_icount,
#ifdef CONFIG_CONSOLE_POLL.poll_init = uart_poll_init,.poll_get_char = uart_poll_get_char,.poll_put_char = uart_poll_put_char,
#endif
};
2.open方法
static int uart_open(struct tty_struct *tty, struct file *filp)
{struct uart_driver *drv = (struct uart_driver *)tty->driver->driver_state;struct uart_state *state;struct tty_port *port;int retval, line = tty->index;BUG_ON(!tty_locked());pr_debug("uart_open(%d) called\n", line);retval = -ENODEV;if (line >= tty->driver->num)goto fail;state = uart_get(drv, line); //获取uart_stateif (IS_ERR(state)) {retval = PTR_ERR(state);goto fail;}port = &state->port; //获取tty_porttty->driver_data = state;state->uart_port->state = state;tty->low_latency = (state->uart_port->flags & UPF_LOW_LATENCY) ? 1 : 0;tty->alt_speed = 0;tty_port_tty_set(port, tty);if (tty_hung_up_p(filp)) {retval = -EAGAIN;port->count--;mutex_unlock(&port->mutex);goto fail;}if (port->count == 1)uart_change_pm(state, 0);retval = uart_startup(tty, state, 0); //启动串口mutex_unlock(&port->mutex);if (retval == 0)retval = tty_port_block_til_ready(port, tty, filp);
fail:return retval;
}
uart_startup
static int uart_startup(struct tty_struct *tty, struct uart_state *state, int init_hw)
{struct uart_port *uport = state->uart_port; //获取uart_portstruct tty_port *port = &state->port; //获取tty_portunsigned long page;int retval = 0;if (port->flags & ASYNC_INITIALIZED)return 0;set_bit(TTY_IO_ERROR, &tty->flags);if (uport->type == PORT_UNKNOWN)return 0;if (!state->xmit.buf) {/* This is protected by the per port mutex */page = get_zeroed_page(GFP_KERNEL);if (!page)return -ENOMEM;state->xmit.buf = (unsigned char *) page;uart_circ_clear(&state->xmit);}retval = uport->ops->startup(uport); //调用uart_port的startup方法if (retval == 0) {if (init_hw) {uart_change_speed(tty, state, NULL);if (tty->termios->c_cflag & CBAUD)uart_set_mctrl(uport, TIOCM_RTS | TIOCM_DTR);}if (port->flags & ASYNC_CTS_FLOW) {spin_lock_irq(&uport->lock);if (!(uport->ops->get_mctrl(uport) & TIOCM_CTS))tty->hw_stopped = 1;spin_unlock_irq(&uport->lock);}set_bit(ASYNCB_INITIALIZED, &port->flags);clear_bit(TTY_IO_ERROR, &tty->flags);}if (retval && capable(CAP_SYS_ADMIN))retval = 0;return retval;
}
3.写方法
static int uart_write(struct tty_struct *tty,const unsigned char *buf, int count)
{struct uart_state *state = tty->driver_data; //获取uart_statestruct uart_port *port;struct circ_buf *circ;unsigned long flags;int c, ret = 0;if (!state) {WARN_ON(1);return -EL3HLT;}port = state->uart_port; //获取uart_portcirc = &state->xmit;if (!circ->buf)return 0;spin_lock_irqsave(&port->lock, flags);while (1) {c = CIRC_SPACE_TO_END(circ->head, circ->tail, UART_XMIT_SIZE);if (count < c)c = count;if (c <= 0)break;memcpy(circ->buf + circ->head, buf, c);circ->head = (circ->head + c) & (UART_XMIT_SIZE - 1);buf += c;count -= c;ret += c;}spin_unlock_irqrestore(&port->lock, flags);uart_start(tty); //调用uart_start方法return ret;
}
uart_start
static void uart_start(struct tty_struct *tty)
{struct uart_state *state = tty->driver_data; //获取tty_statestruct uart_port *port = state->uart_port; //获取uart_portunsigned long flags;spin_lock_irqsave(&port->lock, flags);__uart_start(tty); //调用__uart_start函数spin_unlock_irqrestore(&port->lock, flags);
}
uart_start>>>__uart_start
static void __uart_start(struct tty_struct *tty)
{struct uart_state *state = tty->driver_data; //获取uart_statestruct uart_port *port = state->uart_port; //获取uart_portif (!uart_circ_empty(&state->xmit) && state->xmit.buf &&!tty->stopped && !tty->hw_stopped)port->ops->start_tx(port); //调用uart_port的start_tx方法
}
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 了不起的修仙模拟器 破解版|了不起的修仙模拟器中文破解版下载(附游戏攻略)
点击下载: 了不起的修仙模拟器中文破解版 了不起的修仙模拟器是由GSQ Games开发、Gamera Game发行的一款角色扮演的一款策略型游戏。将国内的修仙题材为基础,而打造的2dd角色扮演游戏,运用的中国特色的画风,还加入了多种游戏风格以及元素等例如灵兽养成、修炼仙丹、扩张门派…...
2024/5/3 22:02:59 - 将PB的源程序打包成可安装文件
1,建立工程对象 New - Project -- Application 如下图 点击 Deploy 如下!图像不全 可参考 相册中的图片 点击 save运行 pb 系统 专门 的安装打包工具软件 PowerBuilder RunTime Packager (不在pb开发平台里,在XP系统程序Sybase/powerbuilder菜单下) 运行如下图:打包后 可…...
2024/4/20 18:32:17 - js: 字符串截取最后一个_后面的字符
str = c_str_123; start = str.lastIndexOf(_) + 1; str = str.substr(start);...
2024/4/20 18:32:16 - 【Android】PreferenceFragment
调用PreferenceFragment类出错,用了我三天时间才搞定,查官方文档,看百度最后在这位大佬的帖子帮助下终于搞定了。https://blog.csdn.net/cqx13763055264/article/details/78498419#commentBoxPreferenceActivity创建和使用比较复杂,Android官方现在不建议使用了,使用Prefe…...
2024/5/5 16:52:52 - 游戏共享模式的参考
这个模式值得参考!比如你要上传后才可以获得积分,凭积分可以下载其他人写的主体AI等!下载量越大,所需积分越多,到最后确定为收费,价位自动化确定。人与人的关系有时候是不可捉摸并且易变的,在虚拟世界也是如此。即使是在一款没有刀剑,没有枪炮的游戏世界里,依然有矛盾…...
2024/4/20 18:32:14 - js 字符串截取相关
1.substring() 方法用于提取字符串中介于两个指定下标之间的字符。stringObject.substring(startPos,stopPos) startPos:必需。一个非负的整数,开始位置。stopPos:可选。一个非负的整数,结束位置,如果省略该参数,那么返回的字串会截止到字符串对象的结尾。截取指定位置字…...
2024/4/21 8:21:56 - VS2017安装打包工具;以及无法加载此项目,setup(不兼容),该应用程序未安装、MFC的使用
感谢分享VS2017安装打包工具,相比Installshield好用吧下载1、打开VS2017,工具--->扩展和更新-->联机-->搜索--->Microsoft Visual Studio2017 Installer Projects -->下载修改开始安装安装中这里加入VS还在运行,则会提示关掉后才可以修改(若找不到对应的,在…...
2024/4/21 8:21:55 - GPS NMEA 0183 4.10协议/GPS Linux串口驱动
NMEA 0183是美国国家海洋电子协会(National Marine Electronics Association)为海用电子设备制定的标准格式。现在已经成为GPS导航设备统一的RTCM(Radio Technical Commission for Maritime services)标准协议。 下图为GYM-1010-B 北斗导航模块,同时支持北斗二代 B1、GPS …...
2024/4/21 8:21:56 - JS之字符串截取方法substring
作用:substring() 方法用于提取字符串中介于两个指定下标之间的字符语法:stringObject.substring(start,stop)参数1:必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置参数2:可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObjec…...
2024/4/21 8:21:53 - Scratch 创意游戏(一):弹球游戏
原文:https://www.kidscoding8.com/19151.html 大家一定在不同平台玩过这样一款游戏——打砖块。 Scratch 创意编程(一):弹球游戏 游戏方式很简单: (1) 小球在屏幕中不断反弹,碰到墙壁反弹(除底板外)、碰到砖块反弹、碰到挡板反弹。 (2) 玩家控制挡板,只能左右移动…...
2024/4/21 8:21:52 - NSIS打包程序安装包教程,包括设置程序后台启动,开机自启动,安装卸载杀死进程以及带注册码、安装许可证协议以及个性化设置等功能(新增exec族调用win api/bat)
一 NSIS工具的使用启动NIS Edit。在“文件”菜单中“新建脚本:向导”=>下一步”。设置应用程序信息,如软件名称、版本、出版人等,当然最一个网站可以留空,如果设置了,则安装包会生成一个对应网址的“Internet 快捷方式”。设置程序选项,如安装包图标、安装程序文件、安…...
2024/4/21 8:21:51 - linux使用USB转串口驱动设置
【一】、驱动相关说明: 如果直接使用串口线,而没有用到USB转串口设备,就不需要安装驱动。 如果使用了USB转串口,一般情况下也不需要安装驱动了,目前linux系统已经包含了该驱动,可以自动识别,亦可通过以下命令查看以便确认是否支持。 查看模块装载的情况: 引用# lsmod |…...
2024/4/21 8:21:50 - PreferenceFragment的不同接口的调用说明
01)首次进入时01-01 01:29:17.473 I/LockScreenSettings( 7727): LockScreenSettings onCreate01-01 01:29:17.482 I/LockScreenSettings( 7727): LockScreenSettings onCreateView01-01 01:29:17.483 I/LockScreenSettings( 7727): LockScreenSettings onStart01-01 01:29:17…...
2024/4/21 8:21:49 - 【JJ斗地主官网下载】在线斗地主比赛赢大奖,中文棋牌游戏
软件大小:19.6M 更新时间:2014-04-29 软件属性:简体中文 免费软件 应用平台: Win7/WinVista/WinXP/Win8兼容软件 中文棋牌在线竞技游戏JJ斗地主,活动多,免费参赛赢奖品哦,JJ斗地主是最棒的中文棋牌竞技游戏,超然出众,有着画面精美、特效绚丽、操作便捷,劲爽的游戏节…...
2024/4/21 8:21:51 - VS2005 vs2010 Web引用程序打包并安装数据库
vs2010下测试通过: 一个解决方案中可能会包含多个类库项目和一个网站,打包过程如下: 1、在【解决方案资源管理器】中【右键-添加-新建项目】,左侧选择【其他类型项目】,右侧选择【安装项目】,如下图:2、点击【确定】后,右侧【文件系统】选项卡中选择【应用程序文件夹】…...
2024/4/25 15:00:23 - JS11- 字符串截取扩展名
文件名称由两部分组成, 文件名.扩展名 在执行一些操作时,要判断文件类型是否符合规定的类型 例如上传图片,经常要求必须是 jpg 类型的图片 就需要获取 文件名称 中的 扩展名 来进行判断 文件名是任意的名称形式 可以是 123.456.7989.jpg 123.456.7989.html 我们无法确定,扩展名…...
2024/4/21 8:21:46 - 微信游戏分发秒杀360、91游戏市场平台
最近微信5.0发布,最显著的一个变化都是支持游戏,掀起了全民打飞机的热潮,以至于我现在每天晚上睡觉前打飞机,早上醒来第一件事也是打飞机。还是打不过曾经的女神,哎。。.甚至微信另一款游戏「天天爱消除」,也在短短几天内登陆App Store免费版第一。 其实微信里面的贴图商…...
2024/4/21 8:21:45 - vs.net 应用程序部署打包软件 SIM
发现升级到 vs05之后 网上的资源就少了很多很多 搜出来的都是vc6的 东西,今天搜的应用程序部署打包的方法 也很多不对题。还好自己总结出来了 主要用的软件是vs编译器 和smart install maker这2个软件 后面的sim的下载在这里。 首先当然是在环境里编译出release版本的exe出来…...
2024/4/21 8:21:44 - 字符串截取前几位数,截取小数点之前的数字
1,截取字符串前i个字符str=str.substring(0,i);2,去掉字符串的前i个字符str=str.substring(i);将字符串从索引号为2开始截取,var sb = "bbbdsajjds"; sb.substring(2); //bdsajjds从索引号2开始到索引好4结束(并且不包含索引4截取在内,也就是说实际截取的是2和3号…...
2024/5/4 14:29:00 - tty,串口,控制台与驱动程序
tty 设备的名称是从过去的电传打字机缩写而来,最初是指链接到 Unix 系统上的物理或者虚拟终端。随着时间的推移,当通过串行口能够建立起终端连接后,这个名字也用来指任何的串口设备。物理 tty 设备的例子有串口、USB 到串口的转换器,还有需要特殊处理才能正常工作的调制解调…...
2024/4/21 8:21:42
最新文章
- 蓝桥杯-路径之谜
题目描述 小明冒充X星球的骑士,进入了一个奇怪的城堡。城堡里面什么都没有,只有方形石头铺成的地面。 假设城堡的地面时n*n个方格。如下图所示。 按习俗,骑士要从西北角走到东南角。可以横向或者纵向移动,但是不能斜着走&#x…...
2024/5/5 17:28:48 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - Spring集成MyBatis
基本准备 创建Dynamic Web Project 引入相关jar包 Spring框架相关jar包 MyBatis连接Spring相关jar包 连接MySQL驱动包 JSTL标签库包 添加db.properties文件,该属性文件配置连接数据库相关信息 drivercom.mysql.jdbc.Driver urljdbc:mysql://localhost:3306/myba…...
2024/5/5 1:55:52 - c# wpf XmlDataProvider 简单试验
1.概要 2.代码 <Window x:Class"WpfApp2.Window12"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expression/blend…...
2024/5/1 6:51:36 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/4 23:54:56 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/4 23:54:56 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/4 23:55:17 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/4 23:55:16 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/4 18:20:48 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/4 23:55:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/4 23:55:06 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/4 23:55:06 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/4 23:55:16 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/4 23:55:01 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) 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 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在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