当前位置: 首页 > news >正文

海南建设培训与执业中心网站/seo算法

海南建设培训与执业中心网站,seo算法,个体工商户经营范围做网站,保定百度推广排名1 通用描述 1.1 STM8 MOSTek 6502 -> ST7 -> STM8 STM8型号单片机分为STM8A、STM8L、STM8S三个系列。 STM8A:汽车级应用 STM8L:超低功耗MCU STM8S:标准系列 1.2 STM32 - F1系列用的最多,最大工作频率72MHz - STM32固件库&am…

1 通用描述
1.1 STM8
MOSTek 6502 -> ST7 -> STM8
STM8型号单片机分为STM8A、STM8L、STM8S三个系列。
STM8A:汽车级应用
STM8L:超低功耗MCU
STM8S:标准系列

1.2 STM32
- F1系列用的最多,最大工作频率72MHz
- STM32固件库(函数)使用手册
STM32F107:2010,DWC2 FS OTG
STM32MP157C-DK2:MPU
STM32U5:U means ULP

1.3 ST开发板种类
ST官方出的有NUCLEO板、Discovery板以及评估板,配置从低到高,价格也是从低到高。
NUCLEO:一般只将MCU引脚引出,还有一个串口(通过STLINK USB虚拟),价格也就几十到100RMB左右。
Discovery板:一般比NUCLEO板多USB(MCU带USB),音频解码,耳机插孔。价格也就100多点。
评估板:功能是最全的,一般外设都有引出,功能最全,价格最高,几百到1000+RMB。

1.4 STM32 GPIO Alternate function mapping
GPIO复用功能要查找的是datasheet。TRM中是详细的寄存器描述,但不包括GPIO复用功能的描述。

2 开发环境搭建
2.1 STM32CubeMX_V4.27.0
www.st.com/stm32cubemx

STM32CubeMX可以生成Atollic公司的TrueSTUDIO项目文件。

2.2 IAR8.30.1
IAR embedded Workbench 8.30
https://m.baidu.com/ala/c/m.3322.cc/mip/40168.html

3 CAN
3.1 CAN分类
PT CAN:PowerTrain CAN,动力总成
CH CAN:Chassis CAN,底盘控制CAN总线
Body CAN:车身控制总线,BMW Body Domain Controller or Basis Central Platform
Info CAN:娱乐系统总线
Diag CAN:诊断控制总线

3.2 CAN速率
同时支持速率500 Kbps和2 Mbps;BMS充电器CAN默认通信传输速率为250 kbit/s。
CAN:payload的长度是固定的8个字节
CAN FD:payload的长度不是8个字节的都是FD;CAN FD包头和payload用不同的速度传输,速率切换从BRS位(bit rate switching)开始一直到CRC(包括CRC)结束

3.3 STM32F072
3.3.1 bxCAN pinout
PB8: CAN Rx
PB9: CAN Tx
STM32F072 Discovery board, without CAN Transceiver MCP2551.

3.3.2 bxCAN Rx filter
bxCAN: Basic Extended CAN
3个发送邮箱,每个发送邮箱包括4个寄存器:
CAN_TIxR[31:21]存放11bits ID
CAN_TDTxR[3:0]存放数据长度DLC
CAN_TDLxR和CAN_TDHxR存放8个字节的payload
2个接收邮箱,每个接收邮箱包括4个寄存器:
CAN_RIxR[31:21]存放11bits ID
CAN_RDTxR[3:0]存放数据长度DLC
CAN_RDLxR和CAN_RDHxR存放8个字节的payload

ID寄存器32bit CAN_FxR1,Mask寄存器32bit CAN_FxR2。CAN接收过滤类似于Marvell 88Q5050交换机的ACL过滤机制,包含数据寄存器,和对应的mask寄存器。mask寄存器某位为1表示接收到的CAN ID对应的位必须与数据寄存器对应的位相同,mask寄存器某位为0表示不关心接收到的CAN ID对应的位,这种内存的类型称为TCAM。
Mask Data Meaning
0        x        Don't care. The data bit can be a one or a zero.
1        0        Hit on 0.
1        1        Hit on 1.

3.4 STM32F072 CANable
3.4.1 PCAN USB
深圳嘉立创打样
STM32F042/072, SRAM 1024 bytes, last 256 bytes are exclusively shared with CAN peripheral.
STM32F405/407 for PCAN USB Pro.

STM32F072
PA8: OTG_FS_SOF, Synopsys DWC OTG
PA11: USB FS DM
PA12: USB FS DP
PA13: SWDIO
PA14: SWCLK
PB8: CAN0_Rx
PB9: CAN0_Tx
PB14: USB HS DM. Waveshare USB3300 PHY Module from TB.
PB15: USB HS DP. Waveshare USB3300 PHY Module from TB.
BOOT0-PF11
一旦开启了USB电源,即USB_CNTR.PDWN位清零,PA11和PA12将不再作为其它功能使用,仅供USB使用,自动作为DM和DP,不需要手工配置IO MUX。

3.4.2 CANable
CANable is based on STM32Cube.
下载ARM官方的arm-none-eabi-gcc编译器。
GNU Arm Embedded Toolchain
gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 

github上搜索CANable。
https://github.com/moonglow/pcan_cantact
make canable
find -name *.bin

3.4.3 Standard PCAN
The STM32F072 has up to 16 mono-directional or 8 bidirectional endpoints.
USB SRAM(0x4000_6000)偏移地址0到ENDP0_RXADDR之间的buffer用来存储端点的参数,每个端点参数有4个寄存器,每个寄存器占用2个字节,分别表示双向EP的接收packet和发送packet的位置和大小。Refer to Src/usbd_conf.c USBD_LL_Init().
Both USB and bxCAN do not support DMA.
Linux: drivers/net/can/usb/peak_usb/pcan_usb.c
CANable: Src/pcan_usb.c
4 endpoints: two for command IN/OUT, another two for message IN/OUT.
CMDOUT / MSGOUT: device_data_out()
CMDIN: pcan_usb_send_command_buffer()
MSGIN: pcan_flush_data()
CMDIN / CMDOUT: 1-byte func +
    1-byte number (GET or SET) +
    14-byte param
MSGOUT: 1-byte prefix +
    1-byte rec_count +
    1-byte status +
    4 or 2-byte ID +
    (DLC = status & 0xf)-byte data + 
    extra_byte (if SRR = 1)

每一个Full-speed USB_EP_MSGIN MPS(Max Packet Size)可以包含多个PCAN消息(Aggregation mode),并且第一个PCAN消息的时间戳是2个字节,从第二个开始的PCAN消息时间戳都是1个字节。下一个Full-speed MPS报文重复该模式。
MSGIN: 1-byte prefix +
    1-byte rec_count +
    1-byte status +
    4 or 2-byte ID +
    2 or 1-byte timestamp +
    (DLC = status & 0xf)-byte data +
    extra_byte (if SRR = 1)
status: bit7 = timestamp, bit6 = internal, bit5 = ext_ID, bit4 = RTR (Remote Transmission Request)
29-bit ID = 4-byte ID >>= 3
11-bit ID = 2-byte ID >>= 5
SRR = ID.bit0, Substitute Remote Request

3.4.4 Debug
1) Windows PCAN-View
When PCAN-View starts, it will send the below five commands.
05: PCAN_USB_CMD_CFG
01: PCAN_USB_CMD_BITRATE
03: PCAN_USB_SET_SILENT_MODE
0b: PCAN_USB_CMD_LED
03: PCAN_USB_CMD_BUS

2)status packet
03 02 01, CAN bus active, then call pcan_timesync_event() sends the timestamp frame 02 02 42 04 01 b1 28 40 01 00 to PC periodically for about 1 second.
2-byte header: 02 02
1-byte status: 42
1-byte function: 04, PCAN_USB_REC_TS
1-byte number: 01
2-byte timestamp: b1 28
1-byte status: 40
1-byte function: 01, PCAN_USB_REC_ERROR
1-byte number: 00

3) CANable patch
MSGIN: 14 x Max_Packet_Size = 14 x 64-byte, the first PCAN packet in each 64-byte has two bytes timestamp.
Add a variable msg_count to pcan_rx_can_frame(), append the 4-byte to status packet.
The first 5-byte of status packet: 02 02 42 04  01
The third 3-byte of PCAN packet: 02 01 08

Change CANable VID from 0x0483 (STMicroelectronics) to 0x0C72, otherwise Windows PCAN_USB.inf cannot recognize CANable because of driver signature issue.
Windows PCAN-View sends PCAN_USB_CMD_BITRATE to CANable twice, the second command will cause STM32F072 bxCAN does not work, after apply the below patch, the issue will be gone.
case PCAN_USB_CMD_BITRATE:
  if (pcan_device.bus_active)
    pcan_can_set_bus_active(0);
  pcan_device.can.btr0 = cmd->param[1];
  pcan_device.can.btr1 = cmd->param[0];
  pcan_set_bitrate( cmd->param );
  if (pcan_device.bus_active)
    pcan_can_set_bus_active(
      pcan_device.bus_active);

4) Bit timing
STM32F072 CANbps = APB1_clock / BRP / (tseg1 + tseg2 + 1)
PCAN-View发送给CANable下位机的有关时序的4个参数中sjw、tseg1和tseg2是三个数组的索引,索引到三个值后分别减去1,再写入CAN_BTR寄存器,而brp的数值做特殊处理后,再减去1写入CAN_BTR寄存器。
从函数SystemClock_Config中找出APB1 bxCAN的时钟信息,APB1的时钟是48 MHz。

500 kBit/s
APB1: 48 MHz
tseg1 = c -> CAN_BS1_13TQ -> 13
tseg2 = 1 -> CAN_BS2_2TQ -> 2
brp = 0 -> 1 x 6 -> 6
sjw = 0 -> CAN_SJW_1TQ -> 1

4 USB
4.1 USB SRAM
USB SRAM base: 0x4000_6000
STM32F072/042是2014年发布的产品。STM32F072/042上对STM32F103的USBD做了改进,0x400空间里面塞下了1024B的SRAM,而且最后面的256B可以分给CAN专用,前面768B给USBD,完美解决了STM32F103的USBD和CAN不能同时使用的问题。除此之外,STM32F072/042还增加了LPM、DP上拉电阻;尤其是DP上拉电阻,节省一个电阻和一个IO,是非常好的改进。

4.2 Flash and SRAM Base Address
STM32F042/072 bootROM supports USB DFU. The built-in USB IP is legacy, not DWC.
On-chip Flash base address: 0x0800_0000, 1 Kbyte page
On-chip RAM base address: 0x2000_0000, SRAM data bus is 36 bits because 4 bits are available for parity check (1 bit per byte) in order to increase memory robustness.

4.3 DFU Tool
Refer to AN2606 to get what STM32 devices support DFU bootloader.
Use Zadig to replace DFU driver with WinUSB.
https://zadig.akeo.ie/
https://dfu-util.sourceforge.net/
dfu-util -d 0483:df11 -a 0 -s 0x08000000 -D xx.bin

There is a web to implement USB DFU based on the draft WebUSB specification (based on WinUSB, Javascript API, Chrome 61, in 2018).

4.4 VCP
STM32F0x2xx USB FS device library: UM1717
1)添加CDC ACM的3个端点时,顺序排在PCAN的4个端点之后,中间不能有端点不用,否则Windows 10 CDC ACM不工作。
2)CAN_MSGIN和VCP_DATIN双方会互抢带宽,所以VCP发送到PC的日志要尽可能少。
3)VCP的setup bRequest只要实现0x20(SET)和0x21(GET)。

typedef struct usb_interface_assoc_descriptor {
  uint8_t bLength;
  uint8_t bDescriptorType;
  uint8_t bFirstInterface;
  uint8_t bInterfaceCount;
  uint8_t bFunctionClass;
  uint8_t bFunctionSubClass;
  uint8_t bFunctionProtocol;
  uint8_t iFunction;
} USB_INTERFACE_ASSOC_DESCRIPTOR;

typedef struct usb_cdc_header_desc {
  uint8_t bLength;
  uint8_t bDescriptorType;
  uint8_t bDescriptorSubType;
  uint16_t bcdCDC;
} USB_CDC_HEADER_DESC;
typedef struct usb_cdc_call_mgmt_descriptor {
  uint8_t bLength;
  uint8_t bDescriptorType;
  uint8_t bDescriptorSubType;
  uint8_t bmCapabilities;
  uint8_t bDataInterface;
} USB_CDC_CALL_MGMT_DESCRIPTOR;
typedef struct usb_cdc_acm_descriptor {
  uint8_t bLength;
  uint8_t bDescriptorType;
  uint8_t bDescriptorSubType;
  uint8_t bmCapabilities;
} USB_CDC_ACM_DESCRIPTOR;
typedef struct usb_cdc_union_desc {
  uint8_t bLength;
  uint8_t bDescriptorType;
  uint8_t bDescriptorSubType;
  uint8_t bMasterInterface0;
  uint8_t bSlaveInterface0;
} USB_CDC_UNION_DESC;

static struct usb_cdc_line_coding line_code = {
  .dwDTERate = 9600,
  .bCharFormat = 0, /* stop bits-1 */
  .bParityType = 0, /* none */
  .bDataBits = 8, /* nb. of bits 8 */
};

include <stdarg.h>
void usb_printf(const char *fmt, ...)
{
  USBD_HandleTypeDef *pdev = &hUsbDeviceFS;
  va_list args;
  uint32_t len;
  char buf[APP_TX_DATA_SIZE];

  if (pdev->dev_state !=
      USBD_STATE_CONFIGURED)
    return;


  va_start(args, fmt);
  len = vsnprintf(buf,
        (APP_TX_DATA_SIZE - 1),
        fmt, args);
  va_end(args);
  buf[len] = '\0';

  if (pdev->ep_in[VCP_USB_EP_DATIN & 0xFU].total_length)
    return;
  pdev->ep_in[VCP_USB_EP_DATIN & 0xFU].total_length =
    (len + 1);
  USBD_LL_Transmit(pdev,
    VCP_USB_EP_DATIN,
    (uint8_t *)buf,
    (len + 1));
}
Download Davidozzoo / STM32-USB-VCP from github.

4.5 socketCAN
sudo ip link set can0 type can bitrate 500000 restart-ms 100
sudo ip link set up can0
sudo apt install can-utils
candump can0
CAN identifier: 456h
CAN data: 00h FFh AAh 55h 01h 02h 03h 04h (8 bytes)
cansend can0 456#00FFAA5501020304

5 STM32软件实施USB PD协议
USB PD通讯使用的是双相标记码(Bi-phase Mark Code,BMC,300KHz,bit rate 600kbps),此码是一种单线通信编码,数据1的传输需要有一次高/低电平之间的切换过程,数据0的传输则是固定的高电平或低电平。

TX:SPI1从模式MISO当作TX,SPI1 CLK通过配置TIM14产生,工作在600KHz(对应BMC 600kbps),ARR = 72Mhz / 600kbps,PSC = 0,72MHz频率输入,每计数12个(= 72MHz / 600kbps)触发产生一个SPI1从clk时钟。
SPI传输数据过程中总是先发送或接收高字节数据,每个时钟周期接收器或发送器左移一位数据。对于小于16位的数据,在发送前必须左对齐,如果接收的数据小于16位,则采用软件将无效的数据位屏蔽。

RX:TIM1 CH1输入捕获模式并用DMA接收数据。
输入捕获模式下:当捕获单元捕获到外来有效信号边沿事件(通过TIM1 CH1 Capture Compare Enable Register = 0xB设置上升沿和下降沿捕获,STM32库使用宏TIM_ICPolarity_BothEdge = 0x000A配置双边沿触发捕获),将此刻计数器的值锁存到CCR(Capture Compare Register,16bit)影子寄存器并自动将CCR影子寄存器的值拷贝进CCR预装寄存器,以供用户读取。DMA传输方式就是将CCR预装寄存器中的计数值传输到内存中。CCR寄存器中的计数值与上一次的计数值相减 x 计数频率的倒数 = 高电平或者低电平信号宽度。
输入捕获采样的频率就是定时器经过预分配器(PSC)之后的频率,譬如STM32F1 TIM1 CH1的计数器频率等于2.4MHz = 72MHz/(Prescaler + 1),那么计数器计数每增加4个就表示BMC(bit rate 600kbps)的一个bit。解码时,如果连续2次计数间隔之差都小于6,那么这2次计数间隔对应的4b5b bit是1,如果1次计数间隔之差大于6,说明这次4b5b bit是0。

https://github.com/alterapraxisptyltd/chromium-ec/blob/master/chip/stm32

MISO (DAT0): mi s əu
MOSI (CMD): m əu si

6 General Abbreviations
AIRC:Application Interrupt and Reset Register
ARR: Automatic Reload Register
BKP: BackUp
BSP:Board Support Package
CCER: Capture/Compare Enable Register,用来判断当前是下降沿捕获中断还是上升沿捕获中断,同时也能随时改变上升沿捕获还是下降沿捕获
CCR: Capture/Compare Register,表示当前中断发生时的CNT寄存器的值,也就是用来判断时间的;PWM输出时作为占空比寄存器,函数是TIM_SetCompare1(...)
CNT: Counter Register,用来计数的,每个定时器时钟周期自动+1,在需要的时间将其清零,便于计时
CmBacktrace:Cortex Microcontroller Backtrace,是一款针对ARM Cortex-M系列MCU的错误代码自动追踪、定位、错误原因自动分析的开源库
CubeMX:Microcontroller GUI
eCC-USB:eCos Centric USB
GHS:Green Hills Software,提供GHS hypervisor(类似于QNX hypervisor)、仪表专用RTOS、MCU开发IDE
IAR:后两个字母取之于创始人名字Anders Rundgren的首字母,瑞典语Ingenjörsfirman Anders Rundgren,意为Anders Rundgren工程公司
IAR icf:ILINK Configuration File
MDATA:More DATA,USB ep双缓冲(ep_kind配置使能)切换机制对应到DATA0和DATA1
MSP:MCU Specific Package
NVIC:Nested Vectors Interrupts Controller
NVIC IPR:Interrupt Priority Registers
OC:Output Compare(输出比较),用于输出PWM信号;寄存器CNT与CCR比较,大于输出1,小于输出0
PMA:Packet Buffer Memory Area
PSC:PreSCaler register,预分频寄存器
RCC:Reset and Clock Control
RCR:Repetition Counter Register,重复次数寄存器
SHPRx:System Handler Priority Registers
SR: Status Register,用来判断是不是输入捕获中断
ST AMG:Analog and MEMS Group,模拟和MEMS部门(现在改成了Analog, MEMS and Sensors Group)
STM32H7:High-perf Cortex-M7
STM32WB:WB表示集成了Wireless Bluetooth模块
STM32WL:WL表示集成了Wireless LoRa模块
PendSV:Pendable 服务是一个中断请求,如果没有其他中断需要响应时,系统将强制执行上下文切换
SVCall:SuperVisor Call由SVC指令触发,FreeRTOS用它来启动任务调度
USB BH reset:Bigger Hammer or Brad Hosler,表示warm reset;you may be confused why the USB 3.0 spec calls the same type of reset "warm reset" in some places and "BH reset" in other places. "BH" reset is supposed to stand for "Big Hammer" reset, but it also stands for "Brad Hosler". Brad died shortly after the USB 3.0 bus specification was started, and they decided to name the reset after him. The suggestion was made shortly before the spec was finalized, so the wording is a bit inconsistent.

相关文章:

STM32F072 CAN and USB

1 通用描述 1.1 STM8 MOSTek 6502 -> ST7 -> STM8 STM8型号单片机分为STM8A、STM8L、STM8S三个系列。 STM8A&#xff1a;汽车级应用 STM8L&#xff1a;超低功耗MCU STM8S&#xff1a;标准系列 1.2 STM32 - F1系列用的最多&#xff0c;最大工作频率72MHz - STM32固件库&am…...

卷积神经网络基础与补充

参考自 up主的b站链接&#xff1a;霹雳吧啦Wz的个人空间-霹雳吧啦Wz个人主页-哔哩哔哩视频这位大佬的博客 https://blog.csdn.net/m0_37867091?typeblog CNN的历史发展&#xff1a; 这一点老师上课的时候也有讲到&#xff0c;BP的出现对CNN的发展至关重要 卷积的特性&#x…...

File Inclusion(Pikachu)

File Inclusion(local) 这里随便点击一个提交 观察url&#xff0c;显示是一个文件file1.php 可以直接通过url修改这个文件 找到自己的文件&#xff08;本地文件&#xff09;shell.php的路径写上去 就可以看到 File Inclusion&#xff08;remote&#xff09; 提交的是一个目标…...

【Redis刨析】知识图谱的构建与实现

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 ChatGPT体验地址 文章目录 前言引用构建过程Redis的知识图谱构建过程Redis介绍快的原因持久化 引用 对于编程的学习&#xff0c;过了初级阶段&#xff0c;我认为应该减少对视频的依赖&am…...

html学习笔记 标题、段落、换行、列表、超链接、图片、表格

<h1></h1> <p></p> <br>换行&#xff0c;不带线 <hr>换行&#xff0c;带线列表 类似↓ 2 1 无序列表 <ul><li></li><li></li><li></li> </ul>有序列表 <oi><li></l…...

汽车项目管理

项目节点&#xff1a; MR (Management Review)——管理层评审 KO (Kick Off)——项目正式启动 SI (Strategy Intent)——战略意图 SC (Strategy Confirmation)——战略确认 PA (Program Approval)——项目批准 PR (Product Readiness)——产品就绪 VP (Verification Prototype)…...

Tg-5511cb: tcxo高稳定性+105℃高温

爱普生推的一款TG-5511CB是一种高稳定的TCXO温补晶体振荡器&#xff0c;频率范围十分广泛从 10mhz ~ 54mhz&#xff0c;它的电源电压只需要3.3V&#xff0c;无论是手机还是其他电子设备&#xff0c;都能轻松提供稳定的电力支持。频率/温度特性表现出色&#xff0c;0.28 10^6Ma…...

Linux 命令 ifconfig 全面解析!

ifconfig 是 network interfaces configuring 的缩写。 在 Linux 操作系统中&#xff0c;ifconfig 用于显示或配置网络设备的参数信息。 查看网卡信息 $ ifconfig # 显示激活状态&#xff08;up 状态&#xff09;的网卡信息 eth0 Link encap:Ethernet HWaddr 00:0c:29:75:8…...

00-Git 应用

Git 应用 一、Git概述 1.1 什么是Git git 是一个代码协同管理工具&#xff0c;也称之为代码版本控制工具&#xff0c;代码版本控制或管理的工具用的最多的&#xff1a; svn、 git。 SVN 是采用的 同步机制&#xff0c;即本地的代码版本和服务器的版本保持一致&#xff08;提…...

安全运维是做什么的,主要工作内容是什么

安全运维&#xff0c;简称SecOps&#xff0c;是一种集成安全措施和流程到信息技术运维的实践。它的目的是确保在日常运维活动中&#xff0c;如网络管理、系统维护、软件更新等&#xff0c;均考虑并融入安全策略。安全运维的核心是实现安全和运维团队的密切协作&#xff0c;以快…...

nodejs+vue+ElementUi大学新生入学系统的设计与实现1hme0

采用B/S模式架构系统&#xff0c;开发简单&#xff0c;只需要连接网络即可登录本系统&#xff0c;不需要安装任何客户端。开发工具采用VSCode&#xff0c;前端采用VueElementUI&#xff0c;后端采用Node.js&#xff0c;数据库采用MySQL。 涉及的技术栈 1&#xff09; 前台页面…...

Unity-序列化和反序列化

序列化是指把对象转换为字节序列的过程,而反序列化是指把字节序列恢复为对象的过程。序列化最主要的用途就是传递对象和保存对象。 在Unity中保存和加载、prefab、scene、Inspector窗口、实例化预制体等都使用了序列化与反序列化。 1 可序列化类型 1> 自定义的具有Serial…...

如何将语音版大模型AI接入自己的项目里(语音ChatGPT)

如何将语音版大模型AI接入自己的项目里语音ChatGPT 一、语音版大模型AI二、使用步骤1、接口2、请求参数3、请求参数示例4、接口 返回示例5、智能生成API代码 三、 如何获取appKey和uid1、申请appKey:2、获取appKey和uid 四、重要说明 一、语音版大模型AI 基于阿里通义千问、百…...

鸿蒙列表,item组件封装传参问题?@ObjectLink 和@Observerd

鸿蒙列表渲染&#xff0c;封装内容组件&#xff0c;进行item传参会报错&#xff1f; class FoodClass {order_id: number 0food_name: string ""food_price: number 0food_count: number 0 }Entry Component struct Demo07 {State message: string Hello World…...

信号与线性系统翻转课堂笔记12——时域取样定理

信号与线性系统翻转课堂笔记12 The Flipped Classroom12 of Signals and Linear Systems 对应教材&#xff1a;《信号与线性系统分析&#xff08;第五版&#xff09;》高等教育出版社&#xff0c;吴大正著 一、要点 &#xff08;1&#xff09;了解信号取样的概念&#xff1…...

爬虫工作量由小到大的思维转变---<Scrapy异常的存放小探讨>

前言: 异常很正常,调试异常/日志异常/错误异常~ 但在爬虫的时候,写完代码--->运行后根本挡不住一些运行异常;于是,把异常写到了中间件~ 当然,这也没有错; 不过,其实可以直接这么设计一下... 正文: 参照一下中间件处理的异常 def process_exception(self, request, exc…...

7.串口通信uart编写思路及自定义协议

前言&#xff1a; 串口是很重要的&#xff0c;有许多模块通信接口就是串口&#xff0c;例如gps模块&#xff0c;蓝牙模块&#xff0c;wifi模块还有一些精度比较高的陀螺仪模块等等&#xff0c;所以学会了串口之后&#xff0c;这些听起来很牛批的模块都能够用起来了。此外&#…...

【物联网】光影之谜:RGB-LED传感器引领科技变革之路

​​&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《物联网实战 | 数字奇迹记》⏰翰墨致赠&#xff1a;狂风挟雷霆舞苍穹&#xff0c;剑气横扫万里空。英雄豪情铸不朽&#xff0c;激荡壮志燃热风。 ​ 目录 ⛳️1. 初识物联网 ⛳…...

promise的使用和实例方法

前言 异步,是任何编程都无法回避的话题。在promise出现之前,js中也有处理异步的方案,不过还没有专门的api能去处理链式的异步操作。所以,当大量的异步任务逐个执行,就变成了传说中的回调地狱。 function asyncFn(fn1, fn2, fn3) {setTimeout(() > {//处理第一个异步任务fn1…...

Visual Studio2022配置ReSharper C++ 常用设置

如需安装免费的可以在下面留言&#xff0c;看到即回复 文章目录 Visual Studio2022配置ReSharper C 常用设置配置Visual Studio2022&#xff0c;使其能够按回车进行补全配置ReSharper C 设置自动弹出配置ReSharper C 的快捷键ReSharper C 去掉注释拼写使用中文注释 如何关闭新版…...

论文解读类的公众号/知乎专栏,交给agent去做吧...

作者 | 二狗 大家好我是二狗&#xff0c;是夕小瑶科技说编辑部的一名作者。 我平时主要负责写AI资讯报道的文章。 大家知道&#xff0c;前阵子二狗我在「赛博马良」平台弄了个AI员工后每次都非常顺利地在第一时间精准抓到爆火的选题。 比如当时Sam Altman被开除的事件&…...

【学习笔记】Java函数式编程03 Stream流-终结操作

书接上回 3.3.3 终结操作 3.3.3.1 forEach 对集合的每一个元素进行处理 接触很多了不赘述 3.3.3.2 count 用来获取当前流中的元素的个数 比如&#xff0c;打印出所有作家的作品的总数 System.out.println(authors.stream().flatMap(author -> author.getBooks().stre…...

2024 Android保活总结

本文介绍的方案都是无需用户主动开启权限的。如果需要用户主动开启权限或者加白名单之类的话保活的意义就不大了&#xff0c;毕竟用户不大可能主动原因让app一直在后台运行 常规的方案 OnePixelActivity 1&#xff0c;监听SCREEN_OFF启动一个像素的Activity&#xff0c;灭屏…...

迅为RK3568开发板Ubuntu上使用串口调试

我们也可以在虚拟机的 Ubuntu 上使用调试串口。首先要参考 11 手册安装好 Ubuntu20.04。在 Ubuntu上可以安装多种串口工具&#xff0c;比如 minicom&#xff0c;picocom&#xff0c;kermit。本章节我们来介绍 minicom 的安装和使用。 输入以下命令安装 minicomapt-get install…...

【http】HTTP/1.0、HTTP/1.1和HTTP/2.0

✨ 专栏介绍 在当今互联网时代&#xff0c;计算机网络已经成为了人们生活和工作中不可或缺的一部分。而要实现计算机之间的通信和数据传输&#xff0c;就需要依靠各种网络协议来进行规范和约束。无论是浏览网页、发送电子邮件还是进行在线交流&#xff0c;都离不开各种各样的网…...

automkcert使用教程

我们在开发的时候往往需要https开启一些浏览器功能,比如摄像头、wss等&#xff0c;自己的云服务器申请证书一个是麻烦&#xff0c;一个是价格贵&#xff0c;这种情况下可以用自签名证书。但自签名证书下有不通用的特点&#xff0c;其他机器无法快速信任自己的网站&#xff0c;因…...

tekton 发布 kubernetes 应用

tekton 发布 kubernetes 应用 基于Kubernetes 服务部署 Tekton Pipeline 实例&#xff0c;部署完成后使用tekton来完成源码拉取、应用打包、镜像推送和应用部署。 本文实现一个 golang-helloworld 项目 CI/CD 的完整流程&#xff0c;具体包括以下步骤&#xff1a; 从 gitee…...

unity脚本API中OnCollisionEnter()、OnTriggerEnter()二者的区别

Unity中的OnCollisionEnter和OnTriggerEnter两个函数在日常的开发中很常见但也容易混淆&#xff0c;下面说一说两者的区别。 碰撞器&#xff08;Collider&#xff09;与触发器&#xff08;Trigger&#xff09;的概念 碰撞器&#xff08;Collider&#xff09;和触发器&#xff…...

2023年12月【考试战报】|ORACLE OCP 19C考试通过

2023年10月【考试战报】|ORACLE OCP 19C考试通过-CSDN博客文章浏览阅读122次。自OCP认证进入中国以来&#xff0c;越来越被大多数DBA所认可&#xff0c;也越来越被企业所重视&#xff0c;90%以上DBA深造&#xff0c;都会选择OCP认证。随着OCP认证在全国范围内的普及&#xff0c…...

鸿蒙操作系统:从手机到物联网,打造全场景智能体验

随着科技的不断发展&#xff0c;人们对于操作系统的需求也在不断升级。鸿蒙操作系统&#xff0c;作为华为推出的新一代智能终端操作系统&#xff0c;凭借其强大的分布式能力、流畅的用户体验以及丰富的应用生态&#xff0c;正逐渐成为人们关注的焦点。 一、鸿蒙操作系统概述 …...