1.下载 git clone https://gitee.com/orangepi-xunlong/opi-bkimg.git
2.进入当前目录下的 opi-bkimg
3.sudo ./opi-bkimg
4.生成img文件在/mnt文件夹
[STM32G4] ADC转换
LL_ADC_EnableIT_EOC(ADC1);
LL_ADC_StartCalibration(ADC1,LL_ADC_SINGLE_ENDED);
while(LL_ADC_IsCalibrationOnGoing(ADC1));
LL_ADC_Enable(ADC1);
LL_ADC_REG_StartConversion(ADC1);
————————
void ADC1_read(uint16_t *pusbuf)
{
LL_ADC_REG_StartConversion(ADC1);
while(LL_ADC_IsActiveFlag_EOC(ADC1) == 0);
pusbuf[0] = LL_ADC_REG_ReadConversionData10(ADC1);
while(LL_ADC_IsActiveFlag_EOC(ADC1) == 0);
pusbuf[1] = LL_ADC_REG_ReadConversionData10(ADC1);
}
[STM32] SPI EEPROM MODE0
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32;// 72000000 ~1MHZ
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI3, &SPI_InitStructure);
[C#]获取字符串中第一个空格后的字符串
string input = CB_Cmd.Text;
string[] parts = input.Split(new[] { ‘ ‘ }, 2); // 最多分割成 2 部分
if (parts.Length > 1)
{
string result = parts[1];
LB_Debug.Text = result;
}
else
{
MessageBox.Show(“请选择正确的参数”);
}
[C#]将0x01的string类型转换为数值
string hexString = “0x01”;
int number = Convert.ToInt32(hexString, 16);
Console.WriteLine(number); // 输出: 1
[C#]将Uint16 类型转换为二进制字符串输出
using System.Text.RegularExpressions;
ushort value = 0x0F0F; // 示例:0x0F0F
string binaryStr = Convert.ToString(value, 2).PadLeft(16, ‘0’);
string formattedBinaryStr = Regex.Replace(binaryStr, “.{4}”, “$0 “).Trim();
[PJ] Beyound Compare 4 到期
在cmd夏输入 reg delete “HKEY_CURRENT_USER\Software\Scooter Software\Beyond Compare 4” /v CacheID /f
[STM32] STM32F4XX 双ADC转换
void ADC_Configuration(void)
{
ADC_InitTypeDef ADC_InitStructure;
ADC_CommonInitTypeDef ADC_CommonInitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
DMA_InitTypeDef DMA_InitStruct;
// 使能DMA2时钟
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC2, ENABLE);
DMA_StructInit(&DMA_InitStruct);
ADC_CommonStructInit(&ADC_CommonInitStructure);
ADC_StructInit(&ADC_InitStructure);
// 配置ADC通用设置
ADC_CommonInitStructure.ADC_Mode = ADC_DualMode_RegSimult; // 双ADC模式,规则同步
ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2; // ADC时钟分频
ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_2; // DMA模式2
ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles; // 双ADC采样延迟
ADC_CommonInit(&ADC_CommonInitStructure);
// 配置ADC1
ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; // 12位分辨率
ADC_InitStructure.ADC_ScanConvMode = ENABLE; // 扫描模式
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; // 单次转换模式
ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_Rising; // 上升沿触发
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T8_TRGO; // TIM8触发
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; // 数据右对齐
ADC_InitStructure.ADC_NbrOfConversion = 3; // 3个转换通道
ADC_Init(ADC1, &ADC_InitStructure);
// 配置ADC1的通道
ADC_RegularChannelConfig(ADC1, ADC_Channel_4, 1, ADC_SampleTime_56Cycles); // 通道0
ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 2, ADC_SampleTime_56Cycles); // 通道1
ADC_RegularChannelConfig(ADC1, ADC_Channel_6, 3, ADC_SampleTime_56Cycles); // 通道2
// 配置ADC2
ADC_Init(ADC2, &ADC_InitStructure);
// 配置ADC2的通道
ADC_RegularChannelConfig(ADC2, ADC_Channel_7, 1, ADC_SampleTime_56Cycles); // 通道0
ADC_RegularChannelConfig(ADC2, ADC_Channel_14, 2, ADC_SampleTime_56Cycles); // 通道1
ADC_RegularChannelConfig(ADC2, ADC_Channel_15, 3, ADC_SampleTime_56Cycles); // 通道2
// 配置DMA2 Stream0(用于ADC1)
DMA_InitStruct.DMA_Channel = DMA_Channel_0;
DMA_InitStruct.DMA_PeripheralBaseAddr = (uint32_t)(&ADC->CDR); // 外设地址
DMA_InitStruct.DMA_Memory0BaseAddr = (uint32_t)(adc_buffer); // 内存地址
DMA_InitStruct.DMA_DIR = DMA_DIR_PeripheralToMemory; // 传输方向
DMA_InitStruct.DMA_BufferSize = 3; // 数据长度 = 3(32 位数据)
DMA_InitStruct.DMA_PeripheralInc = DMA_PeripheralInc_Disable; // 外设地址不递增
DMA_InitStruct.DMA_MemoryInc = DMA_MemoryInc_Enable; // 内存地址递增
DMA_InitStruct.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word; // 外设数据宽度 32 位
DMA_InitStruct.DMA_MemoryDataSize = DMA_MemoryDataSize_Word; // 内存数据宽度 32 位
DMA_InitStruct.DMA_Mode = DMA_Mode_Circular; // 循环模式
DMA_InitStruct.DMA_Priority = DMA_Priority_VeryHigh; // 高优先级
DMA_InitStruct.DMA_MemoryBurst = DMA_MemoryBurst_Single;
DMA_InitStruct.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
//DMA_InitStruct.
DMA_Init(DMA2_Stream0, &DMA_InitStruct);
// 使能DMA2 Stream0中断
DMA_ITConfig(DMA2_Stream0, DMA_IT_TC, ENABLE);
// 使能DMA2 Stream0
DMA_Cmd(DMA2_Stream0, ENABLE);
// 使能ADC1和ADC2
ADC_Cmd(ADC1, ENABLE);
ADC_Cmd(ADC2, ENABLE);
ADC_DMACmd(ADC1, ENABLE);
// 8. 启动 ADC 软件触发转换(若配置为软件触发)
ADC_SoftwareStartConv(ADC1);
ADC_MultiModeDMARequestAfterLastTransferCmd(ENABLE);
// 配置DMA2 Stream0中断
NVIC_InitStructure.NVIC_IRQChannel = DMA2_Stream0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
while (DMA_GetCmdStatus(DMA2_Stream0) != ENABLE);
}
[linux]设置网卡自动连接并设置固定IP
sudo nmcli connection add type wifi ifname wlx7822884b2787 con-name rtlwap ssid rtlwap
sudo nmcli connection modify rtlwap wifi-sec.key-mgmt wpa-psk
sudo nmcli connection modify rtlwap wifi-sec.psk mqdqxyg1qy
sudo nmcli connection modify rtlwap ipv4.addresses 192.168.16.7/24
sudo nmcli connection modify rtlwap ipv4.gateway 192.168.16.1
sudo nmcli connection modify rtlwap ipv4.dns “8.8.4.4,114.114.114.114”
sudo nmcli connection modify rtlwap ipv4.method manual
sudo nmcli connection modify rtlwap connection.autoconnect yes
sudo nmcli connection up rtlwap ifname wlx7822884b2787
[Linux] 清理Vmware垃圾
sudo dd if=/dev/zero of=/bigemptyfile bs=1M
sudo rm -f /bigemptyfile