stm32使用arduino encoder库的改造草案
stm32使用arduino encoder库的改造草案
改装以前的简单项目,升级一下开发板,arduino nano 328p 换到STM32F103。
原项目用到中断监测编码器的库Encoder Library
https://www.pjrc.com/teensy/td_libs_Encoder.html
官方似乎没有说明如何移植到STM32的方法。
来做个实验。
示例代码
/* Encoder Library - Basic Example* http://www.pjrc.com/teensy/td_libs_Encoder.html** This example code is in the public domain.*/#include <Encoder.h>// Change these two numbers to the pins connected to your encoder.
// Best Performance: both pins have interrupt capability
// Good Performance: only the first pin has interrupt capability
// Low Performance: neither pin has interrupt capability
Encoder myEnc(2,3);
// avoid using pins with LEDs attachedvoid setup() {Serial.begin(9600);Serial.println("Basic Encoder Test:");
}long oldPosition = -999;void loop() {long newPosition = myEnc.read();if (newPosition != oldPosition) {oldPosition = newPosition;Serial.println(newPosition);}
}
nano板编译下载运行都很漂亮。
但是 选择 Generic STM32F103C series开发板时编译都不过。报错如下
D:\Program Files\arduino-1.8.9\arduino-builder -dump-prefs -logger=machine -hardware D:\Program Files\arduino-1.8.9\hardware -hardware C:\Users\Administrator\AppData\Local\Arduino15\packages -tools D:\Program Files\arduino-1.8.9\tools-builder -tools D:\Program Files\arduino-1.8.9\hardware\tools\avr -tools C:\Users\Administrator\AppData\Local\Arduino15\packages -built-in-libraries D:\Program Files\arduino-1.8.9\libraries -libraries C:\Users\Administrator\Documents\Arduino\libraries -fqbn=Arduino_STM32-master:STM32F1:genericSTM32F103C:device_variant=STM32F103C8,upload_method=serialMethod,cpu_speed=speed_72mhz,opt=osstd -vid-pid=10C4_EA60 -ide-version=10809 -build-path C:\Users\ADMINI~1\AppData\Local\Temp\arduino_build_683750 -warnings=none -build-cache C:\Users\ADMINI~1\AppData\Local\Temp\arduino_cache_499795 -prefs=build.warn_data_percentage=75 -verbose C:\Users\Administrator\Documents\Arduino\libraries\Encoder\examples\Basic\Basic.pde
D:\Program Files\arduino-1.8.9\arduino-builder -compile -logger=machine -hardware D:\Program Files\arduino-1.8.9\hardware -hardware C:\Users\Administrator\AppData\Local\Arduino15\packages -tools D:\Program Files\arduino-1.8.9\tools-builder -tools D:\Program Files\arduino-1.8.9\hardware\tools\avr -tools C:\Users\Administrator\AppData\Local\Arduino15\packages -built-in-libraries D:\Program Files\arduino-1.8.9\libraries -libraries C:\Users\Administrator\Documents\Arduino\libraries -fqbn=Arduino_STM32-master:STM32F1:genericSTM32F103C:device_variant=STM32F103C8,upload_method=serialMethod,cpu_speed=speed_72mhz,opt=osstd -vid-pid=10C4_EA60 -ide-version=10809 -build-path C:\Users\ADMINI~1\AppData\Local\Temp\arduino_build_683750 -warnings=none -build-cache C:\Users\ADMINI~1\AppData\Local\Temp\arduino_cache_499795 -prefs=build.warn_data_percentage=75 -verbose C:\Users\Administrator\Documents\Arduino\libraries\Encoder\examples\Basic\Basic.pde
Using board 'genericSTM32F103C' from platform in folder: D:\Program Files\arduino-1.8.9\hardware\Arduino_STM32-master\STM32F1
Using core 'maple' from platform in folder: D:\Program Files\arduino-1.8.9\hardware\Arduino_STM32-master\STM32F1
Detecting libraries used...
"C:\\Users\\Administrator\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\arm-none-eabi-gcc\\4.8.3-2014q1/bin/arm-none-eabi-g++" -c -g -Os -w -DDEBUG_LEVEL=DEBUG_NONE -std=gnu++11 -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -DBOARD_generic_stm32f103c -DVECT_TAB_ADDR=0x8000000 -DERROR_LED_PORT=GPIOC -DERROR_LED_PIN=13 -w -x c++ -E -CC -mcpu=cortex-m3 -DF_CPU=72000000L -DARDUINO=10809 -DARDUINO_GENERIC_STM32F103C -DARDUINO_ARCH_STM32F1 -DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG -DMCU_STM32F103C8 -mthumb -march=armv7-m -D__STM32F1__ -DARDUINO_ARCH_STM32 -DMCU_STM32F103C8 -mthumb -march=armv7-m -D__STM32F1__ -DARDUINO_ARCH_STM32 "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\system/libmaple" "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\system/libmaple/include" "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\system/libmaple/stm32f1/include" "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\system/libmaple/usb/stm32f1" "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\system/libmaple/usb/usb_lib" "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\cores\\maple" "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\variants\\generic_stm32f103c" "C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\arduino_build_683750\\sketch\\Basic.pde.cpp" -o nul
"C:\\Users\\Administrator\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\arm-none-eabi-gcc\\4.8.3-2014q1/bin/arm-none-eabi-g++" -c -g -Os -w -DDEBUG_LEVEL=DEBUG_NONE -std=gnu++11 -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -DBOARD_generic_stm32f103c -DVECT_TAB_ADDR=0x8000000 -DERROR_LED_PORT=GPIOC -DERROR_LED_PIN=13 -w -x c++ -E -CC -mcpu=cortex-m3 -DF_CPU=72000000L -DARDUINO=10809 -DARDUINO_GENERIC_STM32F103C -DARDUINO_ARCH_STM32F1 -DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG -DMCU_STM32F103C8 -mthumb -march=armv7-m -D__STM32F1__ -DARDUINO_ARCH_STM32 -DMCU_STM32F103C8 -mthumb -march=armv7-m -D__STM32F1__ -DARDUINO_ARCH_STM32 "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\system/libmaple" "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\system/libmaple/include" "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\system/libmaple/stm32f1/include" "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\system/libmaple/usb/stm32f1" "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\system/libmaple/usb/usb_lib" "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\cores\\maple" "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\variants\\generic_stm32f103c" "-IC:\\Users\\Administrator\\Documents\\Arduino\\libraries\\Encoder" "C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\arduino_build_683750\\sketch\\Basic.pde.cpp" -o nul
Error while detecting libraries included by C:\Users\ADMINI~1\AppData\Local\Temp\arduino_build_683750\sketch\Basic.pde.cpp
"C:\\Users\\Administrator\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\arm-none-eabi-gcc\\4.8.3-2014q1/bin/arm-none-eabi-g++" -c -g -Os -w -DDEBUG_LEVEL=DEBUG_NONE -std=gnu++11 -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -DBOARD_generic_stm32f103c -DVECT_TAB_ADDR=0x8000000 -DERROR_LED_PORT=GPIOC -DERROR_LED_PIN=13 -w -x c++ -E -CC -mcpu=cortex-m3 -DF_CPU=72000000L -DARDUINO=10809 -DARDUINO_GENERIC_STM32F103C -DARDUINO_ARCH_STM32F1 -DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG -DMCU_STM32F103C8 -mthumb -march=armv7-m -D__STM32F1__ -DARDUINO_ARCH_STM32 -DMCU_STM32F103C8 -mthumb -march=armv7-m -D__STM32F1__ -DARDUINO_ARCH_STM32 "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\system/libmaple" "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\system/libmaple/include" "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\system/libmaple/stm32f1/include" "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\system/libmaple/usb/stm32f1" "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\system/libmaple/usb/usb_lib" "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\cores\\maple" "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\variants\\generic_stm32f103c" "-IC:\\Users\\Administrator\\Documents\\Arduino\\libraries\\Encoder" "-IC:\\Users\\Administrator\\Documents\\Arduino\\libraries\\Encoder\\utility" "C:\\Users\\Administrator\\Documents\\Arduino\\libraries\\Encoder\\Encoder.cpp" -o nul
Error while detecting libraries included by C:\Users\Administrator\Documents\Arduino\libraries\Encoder\Encoder.cpp
Generating function prototypes...
"C:\\Users\\Administrator\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\arm-none-eabi-gcc\\4.8.3-2014q1/bin/arm-none-eabi-g++" -c -g -Os -w -DDEBUG_LEVEL=DEBUG_NONE -std=gnu++11 -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -DBOARD_generic_stm32f103c -DVECT_TAB_ADDR=0x8000000 -DERROR_LED_PORT=GPIOC -DERROR_LED_PIN=13 -w -x c++ -E -CC -mcpu=cortex-m3 -DF_CPU=72000000L -DARDUINO=10809 -DARDUINO_GENERIC_STM32F103C -DARDUINO_ARCH_STM32F1 -DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG -DMCU_STM32F103C8 -mthumb -march=armv7-m -D__STM32F1__ -DARDUINO_ARCH_STM32 -DMCU_STM32F103C8 -mthumb -march=armv7-m -D__STM32F1__ -DARDUINO_ARCH_STM32 "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\system/libmaple" "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\system/libmaple/include" "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\system/libmaple/stm32f1/include" "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\system/libmaple/usb/stm32f1" "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\system/libmaple/usb/usb_lib" "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\cores\\maple" "-ID:\\Program Files\\arduino-1.8.9\\hardware\\Arduino_STM32-master\\STM32F1\\variants\\generic_stm32f103c" "-IC:\\Users\\Administrator\\Documents\\Arduino\\libraries\\Encoder" "C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\arduino_build_683750\\sketch\\Basic.pde.cpp" -o "C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\arduino_build_683750\\preproc\\ctags_target_for_gcc_minus_e.cpp"
In file included from C:\Users\Administrator\Documents\Arduino\libraries\Encoder/Encoder.h:46:0,from C:\Users\Administrator\Documents\Arduino\libraries\Encoder\examples\Basic\Basic.pde:7:C:\Users\Administrator\Documents\Arduino\libraries\Encoder/utility/interrupt_pins.h:150:2: error: #error "Interrupts are unknown for this board, please add to this code"#error "Interrupts are unknown for this board, please add to this code"^C:\Users\Administrator\Documents\Arduino\libraries\Encoder/utility/interrupt_pins.h:153:2: error: #error "Encoder requires interrupt pins, but this board does not have any :("#error "Encoder requires interrupt pins, but this board does not have any :("^C:\Users\Administrator\Documents\Arduino\libraries\Encoder/utility/interrupt_pins.h:154:2: error: #error "You could try defining ENCODER_DO_NOT_USE_INTERRUPTS as a kludge."#error "You could try defining ENCODER_DO_NOT_USE_INTERRUPTS as a kludge."^使用库 Encoder 在文件夹: C:\Users\Administrator\Documents\Arduino\libraries\Encoder (legacy)
exit status 1
为开发板 Generic STM32F103C series 编译时出错。
Error while detecting libraries included by C:\Users\Administrator\Documents\Arduino\libraries\Encoder\Encoder.cpp,
没有细究,可能编译时与头文件引用顺序有关??,发现Encoder.cpp内部只有两行代码,直接拿到主文件就好了。
再经过穿针引线读了一番库的源码,示例文件做了相关改进
/* Encoder Library - Basic Example* http://www.pjrc.com/teensy/td_libs_Encoder.html** This example code is in the public domain.*/
//STM32F103C8 使用 Encoder Library
//设置使用外部中断
#define ENCODER_USE_INTERRUPTS//设置核心中断数,这个数并不是个数,实际上是设置interruptArgs数组的长度
#define CORE_NUM_INTERRUPT 50//
//外部中断引脚号,interruptArgs数组索引相关,CORE_NUM_INTERRUPT要大于等于使用最大的引脚号
#define CORE_INT28_PIN PB12 //28
#define CORE_INT29_PIN PB13 //29
//stm32 set direct_pin_read_h_
#define IO_REG_TYPE uint32_t
#define PIN_TO_BASEREG(pin) (portInputRegister(digitalPinToPort(pin)))
#define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin))
#define DIRECT_PIN_READ(base, mask) (((*(base)) & (mask)) ? 1 : 0)
//*/
#include <Encoder.h>
//lib file Encoder.cpp 编译err,注释cpp的代码,write them here。
Encoder_internal_state_t * Encoder::interruptArgs[];
//interruptArgs的长度就是CORE_NUM_INTERRUPT,中断与引脚号相关联。
//假设CORE_INT100_PIN=100,interruptArgs会有100个指针,不管是否使用100个中断,所以有点浪费。// Change these two numbers to the pins connected to your encoder.
// Best Performance: both pins have interrupt capability
// Good Performance: only the first pin has interrupt capability
// Low Performance: neither pin has interrupt capability
Encoder myEnc(PB12, PB13);
// avoid using pins with LEDs attachedvoid setup() {Serial.begin(9600);Serial.println("Basic Encoder Test:");
}long oldPosition = -999;void loop() {long newPosition = myEnc.read();if (newPosition != oldPosition) {oldPosition = newPosition;Serial.println(newPosition);}
}
这样虽然能用,但想想CORE_NUM_INTERRUPT、 Encoder::interruptArgs[];总有些纠结。
当然这是库的优势能适应各种不同的开发板。浪费几个字节也是值得的。
下面开刀改库,为了找回这几个字节,并稍微改动了原来的架构,并没有多考虑可移植的问题。
ZEncoder.h
// _______ _______
// Pin1 ______| |_______| |______ Pin1
// negative <--- _______ _______ __ --> positive
// Pin2 __| |_______| |_______| Pin2// new new old old
// pin2 pin1 pin2 pin1 Result
// ---- ---- ---- ---- ------
// 0 0 0 0 no movement
// 0 0 0 1 +1
// 0 0 1 0 -1
// 0 0 1 1 +2 (assume pin1 edges only)
// 0 1 0 0 -1
// 0 1 0 1 no movement
// 0 1 1 0 -2 (assume pin1 edges only)
// 0 1 1 1 +1
// 1 0 0 0 +1
// 1 0 0 1 -2 (assume pin1 edges only)
// 1 0 1 0 no movement
// 1 0 1 1 -1
// 1 1 0 0 +2 (assume pin1 edges only)
// 1 1 0 1 -1
// 1 1 1 0 +1
// 1 1 1 1 no movement
/*// Simple, easy-to-read "documentation" version :-)//void update(void) {uint8_t s = state & 3;if (digitalRead(pin1)) s |= 4;if (digitalRead(pin2)) s |= 8;switch (s) {case 0: case 5: case 10: case 15:break;case 1: case 7: case 8: case 14:position++; break;case 2: case 4: case 11: case 13:position--; break;case 3: case 12:position += 2; break;default:position -= 2; break;}state = (s >> 2);}
*/
#ifndef ZEncoder_h_
#define ZEncoder_h_#define IO_REG_TYPE uint32_t
#define PIN_TO_BASEREG(pin) (portInputRegister(digitalPinToPort(pin)))
#define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin))
#define DIRECT_PIN_READ(base, mask) (((*(base)) & (mask)) ? 1 : 0)// All the data needed by interrupts is consolidated into this ugly struct
// to facilitate assembly language optimizing of the speed critical update.
// The assembly code uses auto-incrementing addressing modes, so the struct
// must remain in exactly this order.
typedef struct {uint8_t pin1;uint8_t pin2;volatile IO_REG_TYPE * pin1_register;volatile IO_REG_TYPE * pin2_register;IO_REG_TYPE pin1_bitmask;IO_REG_TYPE pin2_bitmask;uint8_t state;int32_t position;
} Encoder_internal_state_t;
typedef void (*funcptr)(void);
class ZEncoder
{public:Encoder_internal_state_t encoder;uint8_t encoder_id;ZEncoder(uint8_t pin1, uint8_t pin2) {
#ifdef INPUT_PULLUPpinMode(pin1, INPUT_PULLUP);pinMode(pin2, INPUT_PULLUP);
#elsepinMode(pin1, INPUT);digitalWrite(pin1, HIGH);pinMode(pin2, INPUT);digitalWrite(pin2, HIGH);
#endifencoder.pin1 = pin1;encoder.pin2 = pin2;encoder.pin1_register = PIN_TO_BASEREG(pin1);encoder.pin1_bitmask = PIN_TO_BITMASK(pin1);encoder.pin2_register = PIN_TO_BASEREG(pin2);encoder.pin2_bitmask = PIN_TO_BITMASK(pin2);encoder.position = 0;// allow time for a passive R-C filter to charge// through the pullup resistors, before reading// the initial statedelayMicroseconds(2000);uint8_t s = 0;if (DIRECT_PIN_READ(encoder.pin1_register, encoder.pin1_bitmask)) s |= 1;if (DIRECT_PIN_READ(encoder.pin2_register, encoder.pin2_bitmask)) s |= 2;encoder.state = s;interrupts_in_use = 0;//interrupts_in_use = attach_interrupt(pin1, &encoder);//interrupts_in_use += attach_interrupt2(pin2, &encoder);//update_finishup(); // to force linker to include the code (does not work)//interruptArgs[0]=&encoder;//interruptArgs[1]=&encoder;encoder_id = ZEncoder_id;interruptArgs[encoder_id] = &encoder;ZEncoder_id++;}inline int32_t read() {noInterrupts();if (interrupts_in_use < 2) {update(&encoder);}int32_t ret = encoder.position;interrupts();return ret;}inline void write(int32_t p) {noInterrupts();encoder.position = p;interrupts();}uint8_t interrupts_in_use;private:public:uint8_t ZEncoder_id = 0;static Encoder_internal_state_t * interruptArgs[2];static void update1(Encoder_internal_state_t *arg) {uint8_t state = arg->state & 3;if (digitalRead(arg->pin1)) state |= 4;if (digitalRead(arg->pin2)) state |= 8;arg->state = (state >> 2);switch (state) {case 1: case 7: case 8: case 14:arg->position++;return;case 2: case 4: case 11: case 13:arg->position--;return;case 3: case 12:arg->position += 2;return;case 6: case 9:arg->position -= 2;return;}}static void update(Encoder_internal_state_t *arg) {uint8_t p1val = DIRECT_PIN_READ(arg->pin1_register, arg->pin1_bitmask);uint8_t p2val = DIRECT_PIN_READ(arg->pin2_register, arg->pin2_bitmask);uint8_t state = arg->state & 3;if (p1val) state |= 4;if (p2val) state |= 8;arg->state = (state >> 2);switch (state) {case 1: case 7: case 8: case 14:arg->position++;return;case 2: case 4: case 11: case 13:arg->position--;return;case 3: case 12:arg->position += 2;return;case 6: case 9:arg->position -= 2;return;}}//static void myEnc0_isr_pin1(void) { update(interruptArgs[0]); }//static void myEnc0_isr_pin2(void) { update(interruptArgs[0]); }uint8_t attach_interrupt_pin1(uint8_t interruptArgs_id, void (*FuncPtr)(void)) {Encoder_internal_state_t * e = interruptArgs[interruptArgs_id] ;attachInterrupt(e->pin1, FuncPtr, CHANGE);interrupts_in_use++;return 1;}uint8_t attach_interrupt_pin2(uint8_t interruptArgs_id, void (*FuncPtr)(void)) {Encoder_internal_state_t * e = interruptArgs[interruptArgs_id] ;attachInterrupt(e->pin2, FuncPtr, CHANGE);interrupts_in_use++;return 1;}/*static void isr0(void) { update(interruptArgs[0]);}static void isr1(void) { update(interruptArgs[1]);}uint8_t attach_interrupt(uint8_t pin, Encoder_internal_state_t *state) {interruptArgs[0] = state;attachInterrupt(pin, isr0,CHANGE);return 1;}uint8_t attach_interrupt2(uint8_t pin, Encoder_internal_state_t *state) {interruptArgs[1] = state;attachInterrupt(pin, isr1,CHANGE);return 1;}//*/};
#endif
不考虑兼容性代码简洁了很多。
使用方法:
#define ENCODER_USE_INTERRUPTS
#define ENCODER_ARGLIST_SIZE 2
#include "ZEncoder.h"
Encoder_internal_state_t * ZEncoder::interruptArgs[];
ZEncoder myEnc0(PB12, PB13);
void myEnc0_isr_pin1(void) { ZEncoder::update(ZEncoder::interruptArgs[0]);}
void myEnc0_isr_pin2(void) { ZEncoder::update(ZEncoder::interruptArgs[0]);}void setup() {myEnc0.attach_interrupt_pin1(0, myEnc0_isr_pin1);myEnc0.attach_interrupt_pin2(0, myEnc0_isr_pin2);Serial.begin(9600);Serial.println("Basic Encoder Test:");Serial.println(ZEncoder::interruptArgs[0]->pin1);Serial.println(ZEncoder::interruptArgs[0]->pin2);Serial.println(myEnc0.interrupts_in_use);
}long oldPosition = -999;
void loop() {long newPosition = myEnc0.read();if (newPosition != oldPosition) {oldPosition = newPosition;Serial.println(newPosition);}
}
虽然不优雅,但心里舒坦了。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- SSM web.xml配置
SSM web.xml配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com…...
2024/4/20 14:37:45 - CloseableHttpClient方式配置代理服务器、SSL证书 访问外网
HttpClient官网提供的Demo如下(配置代理服务器):官网地址:http://hc.apache.org/httpcomponents-client-4.5.x/httpclient/examples/org/apache/http/examples/client/ClientProxyAuthentication.javapackage org.apache.http.examples.client;import org.apache.http.Http…...
2024/4/15 3:40:21 - Graph Matching Networks(GMNs) 笔记
Graph Matching Networks for Learning the Similarity of Graph Structured Objects笔记摘要贡献深度图相似学习3.1 图嵌入模型编码器传播层聚合器3.2 图匹配网络(GMN)3.2 learning4. 实验 摘要 文章处理了检索和匹配图结构对象的挑战性问题。文章两个贡献:1. 证明了解决各…...
2024/5/1 5:12:31 - 杂谈职业
算法的学习 (1)提升编程能力:这是初入岗位的必备技能,甚至相伴一生。提升编程能力,应该是IT人士一生的追求。哪怕以后不用再熬夜敲代码,保持对代码的熟悉和手感,也是很有必要。 (2)看paper:这是学习算法、发论文的人怎么也逃不掉的一关,还大多是英文paper,国际知名…...
2024/4/15 3:40:19 - 转载-synergy 一套键鼠多台设备共享
原文链接synergy 一套键鼠多台设备共享2017-02-08 Synergy 可以在多台电脑之间共享鼠标、键盘、剪贴板。开源,跨 Win、Linux、Mac。Synergy 需要注意不是远控软件,类似双屏或者KVM切换器,只是共享鼠标和键盘.具体关于synergy的介绍可以看 Synergy 一套键鼠同时控制多台电脑的…...
2024/4/19 14:56:41 - windbg加载符号
1.ctrl+p 打开输入 srvC:\Symbolshttp://msdl.microsoft.com/download/symbols 2.ctrl+k 打开本地调试,输入指令.sympath srvC:\Symbolshttp://msdl.microsoft.com/download/symbols 3.加载符号 .reload 加载符号 如果上述操作无法完成,你可能犯了两个错误: 1.想直接用,就本…...
2024/4/17 8:51:13 - 开发安全Java应用程序的13条规则
安全性是软件开发中最复杂,最广泛和最重要的方面之一。在开发周期结束时,软件安全性也经常被忽视,或者被简化为仅需进行少量调整。Java是具有许多内置安全性功能的开发平台。 Java安全性软件包已经过严格的测试,并且经常针对新的安全漏洞进行更新。 2017年9月发布的更新的J…...
2024/4/30 0:11:41 - SpringBoot原理初探
SpringBoot原理初探自动配置 自动配置 pom.xml中:spring-boot-dependencies:核心依赖在父工程中! 在写或者引入Spring Boot依赖的时候,不需要指定版本,因为存在这些版本仓库。启动器: <dependency><groupId>org.springframework.boot</groupId><art…...
2024/4/15 3:40:17 - FTP服务器,FTP服务器的连接及管理方法
使用FTP上传工具进行远程连接FTP用于在FTP服务器和FTP客户端之间上传和下载文件,它最优秀的功能就是可以批量管理,可以将文件从一个主机传输到另一个主机。 地址:FTP上传工具 使用FTP上传工具最优秀的功能就是可以批量管理、批量上传,适用于Windows系统,Linux系统和云服务器…...
2024/4/27 23:18:07 - 【java基础(三十八)】接口示例
接口与回调 回调(callback)是一种常见的程序设计模式。在这种模式中,可以指出某个特定事件发生时应该采取的动作。如,可以指出在按下鼠标或选择某个菜单项时应该采取什么行动。 在java.swing包中有一个Timer类,可以使用它在达到给定的时间间隔时发出通告。例如,假如程序中…...
2024/4/15 3:40:14 - Zabbix 监控系统入门简介
Zabbix监控系统入门简介Zabbix是一个基于WEB界面的提供分布式系统监控的企业级的开源解决方案,Zabbix能监视各种网络参数,保证服务器系统的安全稳定的运行,并提供灵活的通知机制以让SA快速定位并解决存在的各种问题。Zabbix分布式监控系统的优点如下:支持自动发现服务器和网…...
2024/4/27 23:37:45 - 论文阅读笔记《Incremental Few-Shot Object Detection》
核心思想本文提出一种可以进行增量式学习的小样本目标检测算法(ONCE),相较于其他的小样本目标检测算法而言,本文的优势在于,当在基础数据集上训练完成后,可以直接使用新的小样本数据集进行推断,而且这个过程不会忘记基础数据集中的内容。本文的主体网络采用了CentreNet(…...
2024/4/17 13:44:26 - 一台计算机安装两个版本数据库
一台计算机安装两个版本数据库 如果你的计算机已经有了一个数据库,还行安装一个其他版本的数据库就使用方法一安装,如果你还没有数据库想直接安装两个版本的数据库到你的计算机上可以使用方法二进行安装。方法一:先安装好一个数据库,再安装另一个数据库。 方法二:两个数据…...
2024/4/19 17:20:33 - ubuntu切换java版本问题
ubuntu切换java版本问题 今日将springboot项目达成jar在服务器上部署时启动不了应用,看了一下报错很快意识到是jre版本问题。由于开发是用的还是java8,但是ubuntu18.04用的是java11.所以需要切换版本。 切换代码如下 #安装 sudo apt install openjdk-8-jdk #切换 sudo update…...
2024/4/15 3:39:55 - SpringBoot注入类、拦截器、异常处理的使用
注入任何类 本节通过一个实际的例子来讲解如何注入一个普通类,并且说明这样做的好处。 假设一个需求是这样的:项目要求使用阿里云的 OSS 进行文件上传。 我们知道,一个项目一般会分为开发环境、测试环境和生产环境。OSS 文件上传一般有如下几个参数:appKey、appSecret、buc…...
2024/4/18 2:10:01 - 每日一测——编辑功能的多个入口
在一个系统中,某个编辑功能可能有多个入口可以进入编辑页面,并提交编辑信息。 在我当前测试的某个项目中,有一个编辑功能,这个编辑功能在两个单独的菜单中都有进入编辑页面的入口,于是我就发现了一个问题。那就是,我从一个入口进入,提交编辑信息并改变记录状态之后,…...
2024/4/25 13:35:45 - Linux命令知识点
Linux命令知识点基础命令进阶命令高级命令1、hostname指令2、id指令3、whoami指令4、ps 指令5、top指令6、du 指令7、find指令8、service指令9、kill指令10、ifconfig指令11、reboot指令12、shutdow指令13、uptime14、uname15、netstate -tnlp指令16、man指令 基础命令 1、cat指…...
2024/4/15 3:37:11 - 分库数据如何查询统计
分库后的计算不能直接使用SQL;异构库 SQL 函数不尽相同;JAVA 硬编码实施难度大;即使借助透明网关访问远程数据库,分库性能优化也是头疼问题。一般常规办法:方法1:java硬编码简单的跨库count运算,Java部分代码大概要写成这样:…public Connection getConnection(Strin…...
2024/4/18 14:42:36 - 浅谈maven
目录Maven的由来需要maven嘛?为什么要使用Maven?它能帮助我们解决什么问题?将项目拆分成多个工程模块概念Maven的简介什么是构建?纯 Java 代码Web 工程实际项目核心好用的maven-compiler-pluginmaven-surefire-pluginmaven-source-plugin与maven-javadoc-plugin复制资源到制…...
2024/4/16 19:02:47 - Java冰雹数计算
【题目】 冰雹数 任意给定一个正整数N ** (N<1000000)** 如果是偶数,执行: N / 2 如果是奇数,执行: N * 3 + 1 生成的新的数字再执行同样的动作,循环往复。通过观察发现 这个数字会一会儿上升到很高,一会儿又降落下来 就这样起起落落的,但最终必会落到“1”, 这有点…...
2024/4/25 1:14:44
最新文章
- Oracle索引组织表与大对象平滑迁移至OceanBase的实施方案
作者简介:严军(花名吉远),十年以上专注于数据库存储领域,精通Oracle、Mysql、OceanBase,对大数据、分布式、高并发、高性能、高可用有丰富的经验。主导过蚂蚁集团核心系统数据库升级,数据库LDC单元化多活项目ÿ…...
2024/5/1 13:20:17 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - Python读取文件里内容
如果要读取一个文件里的内容是 # 文件名: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/5/1 9:42:44 - AI小程序的创业方向:深度思考与逻辑引领
随着人工智能技术的快速发展,AI小程序逐渐成为创业的新热点。在这个充满机遇与挑战的时代,我们有必要深入探讨AI小程序的创业方向,以把握未来的发展趋势。 一、目标市场定位 首先,我们要明确目标市场。针对不同的用户需求&#x…...
2024/4/30 2:38:07 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/29 23:16:47 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/30 18:14:14 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/29 2:29:43 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/30 18:21:48 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/30 9:43:09 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/29 20:46:55 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/30 22:21:04 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/1 4:32:01 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/30 9:42:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/30 9:43:22 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/30 9:42:49 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下: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