首页 > 其他分享 >LPC1100 系列_2.架构与硬件特性

LPC1100 系列_2.架构与硬件特性

时间:2024-11-05 20:46:58浏览次数:3  
标签:架构 示例 void 配置 硬件 LPC1100 LPC 2.5 时钟

2. 架构与硬件特性

在这里插入图片描述

2.1 架构概述

LPC1100 系列是 NXP 公司基于 ARM Cortex-M0 内核的微控制器系列。ARM Cortex-M0 是 ARM 公司推出的一款低功耗、高性能的 32 位 RISC 处理器内核,适用于嵌入式系统和微控制器应用。LPC1100 系列微控制器采用了 Cortex-M0 内核,具有以下主要特点:

  • 低功耗:Cortex-M0 内核的低功耗特性使得 LPC1100 系列适用于电池供电的设备。
  • 高性能:尽管是低功耗内核,Cortex-M0 仍然提供了较高的处理性能,适用于多种嵌入式应用。
  • 小尺寸:Cortex-M0 内核的代码密度较高,使得 LPC1100 系列的芯片尺寸较小,适合紧凑型设计。
  • 丰富的外设:LPC1100 系列集成了多种外设,如 UART、SPI、I2C、ADC、DAC 等,满足各种应用需求。

2.1.1 ARM Cortex-M0 内核概述

ARM Cortex-M0 内核是一个高度优化的 32 位 RISC 处理器,具有以下特点:

  • 哈佛架构:Cortex-M0 采用哈佛架构,分别有独立的指令和数据总线,提高了数据处理的效率。
  • 32 位指令集:支持 32 位指令集,提供了丰富的指令操作,提高了代码的执行效率。
  • 16 位 Thumb-2 指令集:支持 16 位 Thumb-2 指令集,进一步提高了代码密度和执行效率。
  • 中断系统:Cortex-M0 具有高效的中断处理机制,支持快速中断响应和低中断延迟。
  • 调试支持:内核支持多种调试接口,如 JTAG 和 SWD,便于开发和调试。

2.1.2 LPC1100 系列架构特点

LPC1100 系列微控制器在 ARM Cortex-M0 内核的基础上,集成了多种硬件特性,以满足不同应用需求。主要特点包括:

  • 嵌入式闪存:LPC1100 系列通常配备 32KB 到 256KB 的嵌入式闪存,支持多次编程和擦除。
  • SRAM:提供 8KB 到 32KB 的 SRAM,用于数据存储和程序运行。
  • 时钟系统:支持多种时钟源,包括内部 RC 振荡器、外部晶振和 PLL(锁相环)。
  • 电源管理:具有低功耗模式,如睡眠模式和深度睡眠模式,以延长电池寿命。
  • 丰富的外设:集成了多种常用的外设,如 UART、SPI、I2C、ADC、DAC、GPIO 等。

2.2 时钟系统

2.2.1 时钟源

LPC1100 系列微控制器支持多种时钟源,包括:

  • 内部 RC 振荡器:提供 12MHz 的内部时钟源,无需外部组件,适合快速启动和简单应用。
  • 外部晶振:支持外部晶体振荡器,提供更精确的时钟源,适用于需要高精度时钟的应用。
  • PLL(锁相环):通过 PLL 可以将外部时钟源倍频到更高的频率,以提高处理性能。

2.2.2 时钟配置

时钟配置通常通过寄存器进行,以下是一个配置外部晶振和 PLL 的示例代码:

// 配置外部晶振和 PLL
void configure_clock(void) {
    // 使能外部晶振
    LPC_SYSCON->SYSOSCCTRL |= (1 << 0); // SYSOSCCTRL[0]: Enable external oscillator
    LPC_SYSCON->SYSPLLCLKSEL = 0;       // 选择外部晶振作为 PLL 输入源
    LPC_SYSCON->PDRUNCFGCLR |= (1 << 4); // 清除 PLL 电源运行配置,使能 PLL

    // 配置 PLL
    LPC_SYSCON->SYSPLLCTRL = (1 << 0) | (1 << 1); // 设置 PLL 倍频因子
    while ((LPC_SYSPLLCLKUEN & (1 << 1)) == 0);    // 等待 PLL 锁定

    // 选择 PLL 作为系统时钟源
    LPC_SYSCON->SYSAHBCLKSEL = 1; // SYSAHBCLKSEL[0]: Select PLL as system clock source
    LPC_SYSCON->SYSAHBCLKDIV = 1; // 设置系统时钟分频因子
}

2.2.3 低功耗模式

LPC1100 系列支持多种低功耗模式,包括睡眠模式和深度睡眠模式。这些模式通过关闭不必要的时钟和电源,降低功耗。

  • 睡眠模式:在睡眠模式下,CPU 停止运行,但外设和时钟源仍然保持运行。
  • 深度睡眠模式:在深度睡眠模式下,CPU 和大部分外设停止运行,只保留最基本的时钟源和电源管理功能。

以下是一个进入睡眠模式的示例代码:

// 进入睡眠模式
void enter_sleep_mode(void) {
    // 禁用所有外设时钟
    LPC_SYSCON->SYSAHBCLKDIV = 0;
    LPC_SYSCON->SYSAHBCLKSEL = 0;

    // 进入睡眠模式
    __WFI(); // Wait For Interrupt
}

2.3 电源管理

2.3.1 供电模式

LPC1100 系列微控制器支持多种供电模式,包括:

  • 正常模式:CPU 和所有外设正常运行。
  • 睡眠模式:CPU 停止运行,外设保持运行。
  • 深度睡眠模式:CPU 和大部分外设停止运行,只有最基本的时钟源和电源管理功能保持运行。
  • 掉电模式:所有组件停止运行,只保留最基本的掉电检测功能。

2.3.2 电源管理寄存器

电源管理主要通过以下寄存器进行配置:

  • PDRUNCFG:电源运行配置寄存器,用于控制各个模块的电源状态。
  • SYSAHBCLKDIVSYSAHBCLKSEL:系统时钟分频和选择寄存器,用于配置系统时钟。

以下是一个配置电源管理的示例代码:

// 配置电源管理
void configure_power_management(void) {
    // 使能内部 RC 振荡器
    LPC_SYSCON->SYSOSCCTRL |= (1 << 0); // SYSOSCCTRL[0]: Enable internal RC oscillator

    // 关闭 PLL
    LPC_SYSCON->PDRUNCFGSET |= (1 << 4); // 设置 PLL 电源运行配置,关闭 PLL

    // 选择内部 RC 振荡器作为系统时钟源
    LPC_SYSCON->SYSAHBCLKSEL = 0; // SYSAHBCLKSEL[0]: Select internal RC oscillator as system clock source
    LPC_SYSCON->SYSAHBCLKDIV = 1; // 设置系统时钟分频因子
}

2.4 存储器

2.4.1 闪存

LPC1100 系列微控制器通常配备 32KB 到 256KB 的嵌入式闪存,用于存储程序代码和常量数据。闪存的读写操作通过 Flash Memory Controller (FLM) 进行控制。

2.4.2 SRAM

LPC1100 系列提供 8KB 到 32KB 的 SRAM,用于数据存储和程序运行。SRAM 的访问速度较快,适合频繁读写的数据。

2.4.3 存储器映射

LPC1100 系列的存储器映射如下:

  • 0x0000_0000 - 0x0000_FFFF:闪存
  • 0x1000_0000 - 0x1000_FFFF:SRAM
  • 0x4000_0000 - 0x400F_FFFF:系统外设寄存器
  • 0xE000_E000 - 0xE000_EFFF:嵌入式外设寄存器(如 NVIC)

以下是一个简单的存储器访问示例代码:

// 存储器访问示例
void memory_access_example(void) {
    // 定义 SRAM 地址
    uint32_t *sram_address = (uint32_t *)0x10000000;

    // 写入数据到 SRAM
    *sram_address = 0x12345678;

    // 读取数据从 SRAM
    uint32_t data = *sram_address;

    // 输出读取的数据
    printf("Data from SRAM: 0x%08X\n", data);
}

2.5 外设

2.5.1 UART

LPC1100 系列集成了一个或多个 UART 接口,用于串行通信。UART 的配置和使用通常通过寄存器进行。

2.5.1.1 UART 配置

以下是一个配置 UART 的示例代码:

// 配置 UART
void configure_uart(void) {
    // 使能 UART 时钟
    LPC_SYSCON->SYSAHBCLKDIV = 1; // 设置分频因子
    LPC_SYSCON->SYSAHBCLKSEL = 1; // 选择 PLL 作为系统时钟源
    LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 12); // 使能 UART0 时钟

    // 配置 UART 波特率
    LPC_UART0->LCR = (1 << 7); // DLAB = 1,允许访问 DLL 和 DLM 寄存器
    LPC_UART0->DLL = 12;      // 设置低 8 位波特率
    LPC_UART0->DLM = 0;       // 设置高 8 位波特率
    LPC_UART0->LCR = 0x03;    // 8 位数据,无校验位,1 位停止位

    // 使能 UART 发送和接收
    LPC_UART0->IER = (1 << 0) | (1 << 1); // 使能接收和发送中断
    LPC_UART0->FCR = 0x07;               // 清除 FIFO,使能 FIFO,设置触发级别
}
2.5.1.2 UART 数据发送

以下是一个通过 UART 发送数据的示例代码:

// 发送数据通过 UART
void uart_send_data(uint8_t data) {
    // 等待发送缓冲区为空
    while (!(LPC_UART0->LSR & (1 << 5))); // 检查 LSR[5]: THRE

    // 发送数据
    LPC_UART0->THR = data;
}

2.5.2 SPI

LPC1100 系列集成了 SPI 接口,用于同步串行通信。SPI 的配置和使用通常通过寄存器进行。

2.5.2.1 SPI 配置

以下是一个配置 SPI 的示例代码:

// 配置 SPI
void configure_spi(void) {
    // 使能 SPI 时钟
    LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 10); // 使能 SPI 时钟

    // 配置 SPI 模式
    LPC_SPI->CR1 = 0x03; // 主模式,时钟源为 PCLK
    LPC_SPI->CR0 = 0x0F; // 设置时钟分频因子为 16,波特率为 PCLK/16

    // 配置 SPI 数据格式
    LPC_SPI->CPSR = 0x01; // 设置时钟预分频因子
    LPC_SPI->DCR = 0x08;  // 设置数据位长度为 8 位

    // 使能 SPI
    LPC_SPI->CR1 |= (1 << 1); // 使能 SPI
}
2.5.2.2 SPI 数据发送

以下是一个通过 SPI 发送数据的示例代码:

// 发送数据通过 SPI
void spi_send_data(uint8_t data) {
    // 等待发送缓冲区为空
    while (!(LPC_SPI->SR & (1 << 5))); // 检查 SR[5]: TX FIFO 空

    // 发送数据
    LPC_SPI->DR = data;

    // 等待发送完成
    while (!(LPC_SPI->SR & (1 << 3))); // 检查 SR[3]: 传输完成
}

2.5.3 I2C

LPC1100 系列集成了 I2C 接口,用于同步串行通信。I2C 的配置和使用通常通过寄存器进行。

2.5.3.1 I2C 配置

以下是一个配置 I2C 的示例代码:

// 配置 I2C
void configure_i2c(void) {
    // 使能 I2C 时钟
    LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 7); // 使能 I2C 时钟

    // 配置 I2C 波特率
    LPC_I2C->SCL = 100000; // 设置 SCL 时钟频率为 100kHz

    // 使能 I2C
    LPC_I2C->CONSET = (1 << 6); // 使能 I2C
}
2.5.3.2 I2C 数据发送

以下是一个通过 I2C 发送数据的示例代码:

// 发送数据通过 I2C
void i2c_send_data(uint8_t slave_address, uint8_t *data, uint8_t length) {
    // 发送起始信号
    LPC_I2C->CONSET |= (1 << 0); // 发送起始信号

    // 等待起始信号发送完成
    while (LPC_I2C->STAT != 0x08); // 检查状态寄存器

    // 发送从设备地址和写操作
    LPC_I2C->DAT = (slave_address << 1) | 0; // 从设备地址和写操作
    while (LPC_I2C->STAT != 0x18); // 检查状态寄存器

    // 发送数据
    for (uint8_t i = 0; i < length; i++) {
        LPC_I2C->DAT = data[i];
        while (LPC_I2C->STAT != 0x28); // 检查状态寄存器
    }

    // 发送停止信号
    LPC_I2C->CONCLR = (1 << 0); // 发送停止信号
}

2.5.4 ADC

LPC1100 系列集成了 ADC(模数转换器),用于将模拟信号转换为数字信号。ADC 的配置和使用通常通过寄存器进行。

2.5.4.1 ADC 配置

以下是一个配置 ADC 的示例代码:

// 配置 ADC
void configure_adc(void) {
    // 使能 ADC 时钟
    LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 12); // 使能 ADC 时钟

    // 配置 ADC 分辨率和时钟源
    LPC_ADC->CR = (1 << 24) | (1 << 21); // 10 位分辨率,PCLK/4 作为时钟源

    // 选择 ADC 通道
    LPC_ADC->CR |= (1 << 0); // 选择通道 0
}
2.5.4.2 ADC 数据读取

以下是一个读取 ADC 数据的示例代码:

// 读取 ADC 数据
uint16_t read_adc_data(void) {
    // 开始转换
    LPC_ADC->CR |= (1 << 24); // 设置 START 位

    // 等待转换完成
    while (!(LPC_ADC->DR[0] & (1 << 31))); // 检查 DR[31]: DATAVALID

    // 读取转换结果
    uint16_t result = (LPC_ADC->DR[0] & 0x3FF); // 读取 10 位结果

    return result;
}

2.5.5 DAC

LPC1100 系列集成了 DAC(数模转换器),用于将数字信号转换为模拟信号。DAC 的配置和使用通常通过寄存器进行。

2.5.5.1 DAC 配置

以下是一个配置 DAC 的示例代码:

// 配置 DAC
void configure_dac(void) {
    // 使能 DAC 时钟
    LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 13); // 使能 DAC 时钟

    // 配置 DAC 分辨率和时钟源
    LPC_DAC->CR = (1 << 16); // 12 位分辨率
}
2.5.5.2 DAC 数据发送

以下是一个通过 DAC 发送数据的示例代码:

// 发送数据通过 DAC
void dac_send_data(uint16_t data) {
    // 设置 DAC 输出值
    LPC_DAC->CR = (data &当然,我会继续前文内容并确保前后连贯。以下是续写的内容:

## 2.5 外设

### 2.5.5 DAC

LPC1100 系列集成了 DAC(数模转换器),用于将数字信号转换为模拟信号。DAC 的配置和使用通常通过寄存器进行。

#### 2.5.5.1 DAC 配置

以下是一个配置 DAC 的示例代码:

```c
// 配置 DAC
void configure_dac(void) {
    // 使能 DAC 时钟
    LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 13); // 使能 DAC 时钟

    // 配置 DAC 分辨率和时钟源
    LPC_DAC->CR = (1 << 16); // 12 位分辨率
}
2.5.5.2 DAC 数据发送

以下是一个通过 DAC 发送数据的示例代码:

// 发送数据通过 DAC
void dac_send_data(uint16_t data) {
    // 设置 DAC 输出值
    LPC_DAC->CR = (data & 0x0FFF) | (1 << 24); // 设置 12 位输出值并启动转换
}

2.5.6 GPIO

LPC1100 系列集成了通用输入输出(GPIO)端口,用于控制外部设备和接收外部信号。GPIO 的配置和使用通常通过寄存器进行。

2.5.6.1 GPIO 配置

以下是一个配置 GPIO 的示例代码:

// 配置 GPIO
void configure_gpio(void) {
    // 使能 GPIO 时钟
    LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 6); // 使能 GPIO 时钟

    // 配置 GPIO 为输出模式
    LPC_GPIO->DIR = (1 << 0); // 设置 P0.0 为输出模式

    // 配置 GPIO 为输入模式
    LPC_GPIO->DIR &= ~(1 << 1); // 设置 P0.1 为输入模式
}
2.5.6.2 GPIO 数据读写

以下是一个读取和设置 GPIO 数据的示例代码:

// 设置 GPIO 输出
void set_gpio_output(uint8_t pin, uint8_t value) {
    if (value) {
        LPC_GPIO->SET = (1 << pin); // 设置 P0.pin 为高电平
    } else {
        LPC_GPIO->CLR = (1 << pin); // 设置 P0.pin 为低电平
    }
}

// 读取 GPIO 输入
uint8_t read_gpio_input(uint8_t pin) {
    return (LPC_GPIO->PIN & (1 << pin)) ? 1 : 0; // 读取 P0.pin 的状态
}

2.5.7 定时器

LPC1100 系列集成了多个定时器,用于产生定时中断和延时功能。定时器的配置和使用通常通过寄存器进行。

2.5.7.1 定时器配置

以下是一个配置定时器的示例代码:

// 配置定时器
void configure_timer(void) {
    // 使能定时器时钟
    LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 8); // 使能 TMR16B1 时钟

    // 选择定时器时钟源
    LPC_SYSCON->TMR16BCLKSEL = 0; // 选择 PCLK 作为定时器时钟源

    // 配置定时器预分频器和匹配值
    LPC_TMR16B1->PR = 0; // 预分频器设置为 0
    LPC_TMR16B1->MR0 = 10000; // 设置匹配值为 10000

    // 配置定时器中断
    LPC_TMR16B1->MCR = (1 << 0) | (1 << 1); // 在匹配值 0 时产生中断并复位定时器

    // 使能定时器
    LPC_TMR16B1->TCR = (1 << 0); // 使能定时器
    LPC_TMR16B1->TCR |= (1 << 1); // 启动定时器
}
2.5.7.2 定时器中断处理

以下是一个处理定时器中断的示例代码:

// 定时器中断处理函数
void TIMER16B1_IRQHandler(void) {
    // 清除中断标志
    LPC_TMR16B1->IR = (1 << 0); // 清除 MR0 匹配中断标志

    // 处理定时器中断事件
    // 例如,切换一个 LED 的状态
    if (LPC_GPIO->PIN & (1 << 0)) {
        LPC_GPIO->CLR = (1 << 0); // 关闭 P0.0
    } else {
        LPC_GPIO->SET = (1 << 0); // 打开 P0.0
    }
}

2.5.8 看门狗定时器

LPC1100 系列集成了看门狗定时器(WDT),用于在系统出现异常时复位微控制器。看门狗定时器的配置和使用通常通过寄存器进行。

2.5.8.1 看门狗定时器配置

以下是一个配置看门狗定时器的示例代码:

// 配置看门狗定时器
void configure_wdt(void) {
    // 使能看门狗定时器时钟
    LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 9); // 使能 WDT 时钟

    // 配置看门狗定时器时钟源
    LPC_WDT->TC = 0x00000000; // 选择外部 RC 振荡器作为时钟源

    // 配置看门狗定时器时钟分频因子
    LPC_WDT->PC = 0x000000FF; // 设置分频因子为 256

    // 配置看门狗定时器超时周期
    LPC_WDT->TV = 0x0000FFFF; // 设置超时周期为 65535 * 256 / 12MHz = 1.39 秒

    // 使能看门狗定时器
    LPC_WDT->TCR = 0x00000001; // 使能看门狗定时器
}
2.5.8.2 看门狗定时器喂狗

以下是一个喂狗的示例代码:

// 喂狗
void feed_wdt(void) {
    LPC_WDT->TCR = 0x00000002; // 喂狗
}

2.6 中断系统

2.6.1 中断控制器

LPC1100 系列集成了嵌套向量中断控制器(NVIC),用于管理和处理中断。NVIC 支持多个中断源,并且可以配置中断优先级。

2.6.1.1 中断配置

以下是一个配置中断的示例代码:

// 配置中断
void configure_interrupt(void) {
    // 使能外部中断
    LPC_SC->EXTINT = (1 << 0); // 使能外部中断 0
    LPC_SC->EXTMODE = (1 << 0); // 设置外部中断 0 为边沿触发
    LPC_SC->EXTPOLAR = (1 << 0); // 设置外部中断 0 为上升沿触发

    // 使能定时器中断
    NVIC_EnableIRQ(TIMER16B1_IRQn); // 使能定时器 16B1 中断

    // 配置中断优先级
    NVIC_SetPriority(TIMER16B1_IRQn, 1); // 设置定时器 16B1 中断优先级为 1
}

2.6.2 中断服务例程

以下是一个中断服务例程(ISR)的示例代码:

// 定时器中断处理函数
void TIMER16B1_IRQHandler(void) {
    // 清除中断标志
    LPC_TMR16B1->IR = (1 << 0); // 清除 MR0 匹配中断标志

    // 处理定时器中断事件
    // 例如,切换一个 LED 的状态
    if (LPC_GPIO->PIN & (1 << 0)) {
        LPC_GPIO->CLR = (1 << 0); // 关闭 P0.0
    } else {
        LPC_GPIO->SET = (1 << 0); // 打开 P0.0
    }
}

// 外部中断处理函数
void EINT0_IRQHandler(void) {
    // 清除中断标志
    LPC_SC->EXTINT = (1 << 0); // 清除外部中断 0 标志

    // 处理外部中断事件
    // 例如,点亮一个 LED
    LPC_GPIO->SET = (1 << 1); // 打开 P0.1
}

2.7 调试支持

2.7.1 调试接口

LPC1100 系列微控制器支持多种调试接口,如 JTAG 和 SWD(单线调试)。这些接口用于开发和调试过程中的程序下载和运行状态监控。

2.7.1.1 JTAG 接口

JTAG 接口是一种标准的调试接口,支持多线调试和边界扫描。以下是一个启用 JTAG 接口的示例代码:

// 启用 JTAG 接口
void enable_jtag(void) {
    // 使能 JTAG 接口
    LPC_SC->EXTMODE = (1 << 4); // 使能 JTAG 接口
}
2.7.1.2 SWD 接口

SWD 接口是一种单线调试接口,适用于资源受限的应用。以下是一个启用 SWD 接口的示例代码:

// 启用 SWD 接口
void enable_swd(void) {
    // 使能 SWD 接口
    LPC_SC->EXTMODE &= ~(1 << 4); // 禁用 JTAG 接口
    LPC_SC->EXTMODE |= (1 << 5); // 使能 SWD 接口
}

2.7.2 调试寄存器

调试寄存器用于控制调试接口和调试功能。以下是一些常用的调试寄存器:

  • DHCSR:调试硬件控制状态寄存器,用于控制调试状态。
  • DEMCR:调试事件控制寄存器,用于配置调试事件。
  • DSCR:调试状态控制寄存器,用于读取调试状态。

以下是一个配置调试寄存器的示例代码:

// 配置调试寄存器
void configure_debug_registers(void) {
    // 使能调试
    LPC_SC->DHCSR |= (1 << 0); // 使能调试

    // 配置调试事件
    LPC_SC->DEMCR |= (1 << 24); // 使能核心调试事件

    // 读取调试状态
    uint32_t debug_status = LPC_SC->DSCR;
}

2.8 总结

LPC1100 系列微控制器基于 ARM Cortex-M0 内核,具有低功耗、高性能、小尺寸和丰富的外设等特点。时钟系统、电源管理、存储器和外设的配置和使用通过寄存器进行控制。中断系统和调试支持使得开发和调试过程更加便捷。通过本文档的介绍,开发者可以更好地理解和使用 LPC1100 系列微控制器的各项功能。

标签:架构,示例,void,配置,硬件,LPC1100,LPC,2.5,时钟
From: https://blog.csdn.net/chenlz2007/article/details/143417483

相关文章

  • 架构师之路-学渣到学霸历程-43
    NGXIN综合理解Location的作用今天早上我们一块分享了nginx的location的意义,大概也都了解了;今晚我们整理一个综合的实验来验证这个location的具体作用;1、部署综合实验;结合所有的修饰符进行测试;这里在开始之前,添加一个echo模块;实验之前最好就是恢复成最初的快照或者是你......
  • 二十三、Mysql8.0高可用集群架构实战
    文章目录一、MySQLInnoDBCluster1、基本概述2、集群架构3、搭建一主两从InnoDB集群3.1、安装3个数据库实例3.2、安装mysqlrouter和安装mysqlshell3.2.1、安装mysql-router3.2.2、安装mysql-shell3.3、InnoDBCluster初始化3.3.1、参数及权限配置预需求检测3.3.2、初......
  • 静态库、动态库、framework、xcframework、use_frameworks!的作用、关联核心SDK工程和
    1.1库的概念库:程序代码的集合,编译好的二进制文件加上头文件供使用,共享程序代码的一种方式。1.2库的分类根据开源情况分为:开源库(能看到具体实现)、闭源库(只公开调用的的接口,是编译后的二进制文件,看不到具体实现,使用时链接即可。)闭源库分为:动态库.td(之前叫.dylib)或.framework......
  • 软件架构中对前后端分离的学习
    前后端分离架构目录前后端分离架构前端后端前端MVVM架构MVVM(Model-View-ViewModel)架构模式是一种广泛应用于软件开发中的设计模式,特别是在现代前端开发和移动应用开发中。它旨在通过将应用程序分为三个核心部分——模型(Model)、视图(View)和视图模型(ViewModel)——来简化用户界面......
  • 系统集成项目管理工程师笔记4 - 第四章 信息系统架构
    信息系统集成项目涉及的架构通常有系统架构、数据架构、技术架构、应用架构、网络架构、安全架构;4.1架构基础架构的本质是决策;4.1.1指导思想通过指导思想的贯彻实施,推动项目多元参与者能保持集成关键价值的一致性理解,从而减少不必要的矛盾与冲突;4.1.2设计原则......
  • Kubernetes架构及核心组件
    一、基本架构Kubernetes集群可以被看作是一个工厂,而各个组件则是这个工厂里的不同部门:KubernetesAPI服务器:就像是这个工厂的总经理,负责接收所有的请求并将它们分配给相应的部门进行处理。etcd:就像是这个工厂的记事本,负责记录所有的配置信息和状态信息,以便其他组件可......
  • 基于BS架构的图书管理系统的设计与实现,计算机毕业设计项目源码 025,计算机毕设程序(LW+
    摘 要大数据时代下,数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求,利用互联网服务于其他行业,促进生产,已经是成为一种势不可挡的趋势。在图书管理系统的要求下,开发一款整体式结构的图书管理系统,将复杂的系统进行拆分,能够实现对需求的变化快速响应、系统稳......
  • PCIe系列专题之二:2.5 Flow Control缓存架构及信用积分
    一、故事前传之前我们讲了对PCIe的一些基础概念作了一个宏观的介绍,了解了PCIe是一种封装分层协议(packet-basedlayeredprotocol),主要包括事务层(Transactionlayer),数据链路层(Datalinklayer)和物理层(Physicallayer)。较为详细解释请见之前的文章:1.PCIe技术概述;2.0PCIe......
  • 硬件设计布线原则
    1. 高速电流不应流经低速器件高速电路的地返回信号也会造成地平面的电压发生变化。对于地平面或接地走线的感抗,V=Ldi/dt;对于地平面或接地走线的阻抗,V=RI。与数字电流一样,高速电路的地平面或接地走线经过模拟器件时,地线上的电压变化会改变信号链中信号和地之间的关系。......
  • 解析Eureka的架构
    1.引言1.1Eureka的定义与背景Eureka是由Netflix开发的一个RESTful服务,用于服务发现。它是微服务架构中的一个核心组件,主要用于管理服务的注册和发现。Eureka允许服务提供者注册自己的服务信息,同时也允许服务消费者查询可用的服务,以便进行通信和数据交互。Eureka的设计目......