file-type

Fselect:借助类似SQL工具在文件系统中高效查询文件

下载需积分: 9 | 70KB | 更新于2025-01-18 | 54 浏览量 | 0 下载量 举报 收藏
download 立即下载
该工具被设计为可以在各种不同的文件系统上运行,允许用户通过类似于SQL的语法来构造复杂的文件搜索查询。fselect 的主要目标是为用户提供一种高效且直观的方式来执行文件搜索和管理任务。 从标题和描述中,我们可以提炼出以下知识点: 1. **Rust 语言基础**: Rust 是一种系统编程语言,它注重速度、内存安全和并发性。fselect 作为一个用Rust编写的工具,意味着其性能优越且内存使用效率高,这有助于处理大规模的文件搜索任务。 2. **命令行工具**: fselect 是一个命令行界面(CLI)工具,意味着它可以通过命令行终端进行操作,不需要图形用户界面。CLI工具通常适合熟练的技术用户,因为它们可以快速完成任务,并可以通过脚本自动化。 3. **文件搜索功能**: fselect 的核心功能是允许用户搜索文件系统中的文件。这可以通过简单的命令来完成,也可以通过构建复杂的查询来实现更精细的搜索。 4. **类似SQL的查询语法**: fselect 允许用户使用类似SQL的语法来构造查询,这使得熟悉SQL的用户可以快速上手。例如,用户可以使用类似于 SELECT 和 WHERE 的语句来指定搜索条件和返回的数据列。 5. **文件系统操作**: fselect 设计用于与各种不同的文件系统交互,包括但不限于本地磁盘文件系统、网络文件系统等。这意味着它可以跨平台使用,并且适用于复杂的文件管理任务。 6. **查询优化**: 由于fselect 使用类似于SQL的语法,因此它可能包含了优化查询执行的算法,例如索引支持和查询计划。这对于处理大量文件和复杂查询尤为重要。 7. **Hacktoberfest**: 标签中提到了Hacktoberfest,这是一个每年举办一次的活动,鼓励人们为开源项目做出贡献。fselect 可能是这个活动的一部分,意味着它的源代码可能公开,社区成员有机会为其贡献代码。 8. **工具使用场景**: fselect 可以用于多种场景,如数据备份、文件清理、目录管理等。它能够帮助用户找到他们需要的文件,或者识别出不再需要的文件,从而进行删除或归档。 9. **Rust 社区和生态系统**: Rust 的标签暗示fselect 可能是Rust社区中的一部分,这可能意味着它拥有活跃的维护者和贡献者,用户可以从社区获得支持,并可能贡献代码来改进工具。 10. **标签中的其他工具**: SQLRust 可能是与 fselect 相关的一个库或者工具,这表明 fselect 可能使用了 SQLRust 这个Rust库来实现其查询功能。 总结来说,fselect 是一个用Rust编写的命令行工具,它提供了一种高效、直观的方式来搜索文件系统中的文件,使用了类似SQL的查询语法,适合对文件进行精细的搜索和管理。它适用于不同的文件系统和平台,可能支持优化查询以处理大数据量,并可能参与到开源活动和社区支持中。"

相关推荐

filetype

#include "ad9833.h" #include "main.h" //#include "common.h" //*************************** // Pin assign // STM32 AD9833 // GPIOB_Pin_15 ---> FSYNC // GPIOB_Pin_14 ---> SCK // GPIOB_Pin_13 ---> DAT // GPIOB_Pin_12 ---> CS //*************************** /*端口定义 */ #define PORT_FSYNC GPIOB #define PIN_FSYNC GPIO_PIN_7 #define PORT_SCK GPIOB #define PIN_SCK GPIO_PIN_6 #define PORT_DAT GPIOC #define PIN_DAT GPIO_PIN_9 #define PORT_CS GPIOA #define PIN_CS GPIO_PIN_8 //数字电位器片选 //**************************************************************** // #define FSYNC_0() GPIO_ResetBits(PORT_FSYNC, PIN_FSYNC) // #define FSYNC_1() GPIO_SetBits(PORT_FSYNC, PIN_FSYNC) // #define SCK_0() GPIO_ResetBits(PORT_SCK, PIN_SCK) // #define SCK_1() GPIO_SetBits(PORT_SCK, PIN_SCK) // #define DAT_0() GPIO_ResetBits(PORT_DAT, PIN_DAT) // #define DAT_1() GPIO_SetBits(PORT_DAT, PIN_DAT) // #define CS_0() GPIO_ResetBits(PORT_DAT, PIN_CS) // #define CS_1() GPIO_SetBits(PORT_DAT, PIN_CS) // FSYNC引脚控制(低电平/高电平) #define FSYNC_0() HAL_GPIO_WritePin(PORT_FSYNC, PIN_FSYNC, GPIO_PIN_RESET) #define FSYNC_1() HAL_GPIO_WritePin(PORT_FSYNC, PIN_FSYNC, GPIO_PIN_SET) // SCK引脚控制(低电平/高电平) #define SCK_0() HAL_GPIO_WritePin(PORT_SCK, PIN_SCK, GPIO_PIN_RESET) #define SCK_1() HAL_GPIO_WritePin(PORT_SCK, PIN_SCK, GPIO_PIN_SET) // DAT引脚控制(低电平/高电平) #define DAT_0() HAL_GPIO_WritePin(PORT_DAT, PIN_DAT, GPIO_PIN_RESET) #define DAT_1() HAL_GPIO_WritePin(PORT_DAT, PIN_DAT, GPIO_PIN_SET) // CS引脚控制(低电平/高电平) // 注意:原代码中CS误用了PORT_DAT,建议修正为正确的CS端口(如PORT_CS) #define CS_0() HAL_GPIO_WritePin(PORT_CS, PIN_CS, GPIO_PIN_RESET) #define CS_1() HAL_GPIO_WritePin(PORT_CS, PIN_CS, GPIO_PIN_SET) //初始化AD9833 GPIO //void AD9833_Init_GPIO() //{ // GPIO_InitTypeDef GPIO_InitStructure; // RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // GPIO_InitStructure.GPIO_Pin = PIN_FSYNC|PIN_SCK|PIN_DAT|PIN_CS; // GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // GPIO_Init(PORT_SCK, &GPIO_InitStructure); //} /* ********************************************************************************************************* * 函 数 名: AD9833_Delay * 功能说明: 时钟延时 * 形 参: 无 * 返 回 值: 无 ********************************************************************************************************* */ static void AD9833_Delay(void) { uint16_t i; for (i = 0; i < 1; i++); } /* ********************************************************************************************************* * 函 数 名: AD9833_Write * 功能说明: 向SPI总线发送16个bit数据 * 形 参: TxData : 数据 * 返 回 值: 无 ********************************************************************************************************* */ void AD9833_Write(unsigned int TxData) { unsigned char i; SCK_1(); //AD9833_Delay(); FSYNC_1(); //AD9833_Delay(); FSYNC_0(); //AD9833_Delay(); for(i = 0; i < 16; i++) { if (TxData & 0x8000) DAT_1(); else DAT_0(); AD9833_Delay(); SCK_0(); AD9833_Delay(); SCK_1(); TxData <<= 1; } FSYNC_1(); } /* ********************************************************************************************************* * 函 数 名: AD9833_AmpSet * 功能说明: 改变输出信号幅度值 * 形 参: 1.amp :幅度值 0- 255 * 返 回 值: 无 ********************************************************************************************************* */ void AD9833_AmpSet(unsigned char amp) { unsigned char i; unsigned int temp; CS_0(); temp =0x1100|amp; for(i=0;i<16;i++) { SCK_0(); if(temp&0x8000) DAT_1(); else DAT_0(); temp<<=1; SCK_1(); AD9833_Delay(); } CS_1(); } /* ********************************************************************************************************* * 函 数 名: AD9833_WaveSeting * 功能说明: 向SPI总线发送16个bit数据 * 形 参: 1.Freq: 频率值, 0.1 hz - 12Mhz 2.Freq_SFR: 0 或 1 3.WaveMode: TRI_WAVE(三角波),SIN_WAVE(正弦波),SQU_WAVE(方波) 4.Phase : 波形的初相位 * 返 回 值: 无 ********************************************************************************************************* */ void AD9833_WaveSeting(double Freq,unsigned int Freq_SFR,unsigned int WaveMode,unsigned int Phase ) { int frequence_LSB,frequence_MSB,Phs_data; double frequence_mid,frequence_DATA; long int frequence_hex; /*********************************计算频率的16进制值***********************************/ frequence_mid=268435456/25;//适合25M晶振 //如果时钟频率不为25MHZ,修改该处的频率值,单位MHz ,AD9833最大支持25MHz frequence_DATA=Freq; frequence_DATA=frequence_DATA/1000000; frequence_DATA=frequence_DATA*frequence_mid; frequence_hex=frequence_DATA; //这个frequence_hex的值是32位的一个很大的数字,需要拆分成两个14位进行处理; frequence_LSB=frequence_hex; //frequence_hex低16位送给frequence_LSB frequence_LSB=frequence_LSB&0x3fff;//去除最高两位,16位数换去掉高位后变成了14位 frequence_MSB=frequence_hex>>14; //frequence_hex高16位送给frequence_HSB frequence_MSB=frequence_MSB&0x3fff;//去除最高两位,16位数换去掉高位后变成了14位 Phs_data=Phase|0xC000; //相位值 AD9833_Write(0x0100); //复位AD9833,即RESET位为1 AD9833_Write(0x2100); //选择数据一次写入,B28位和RESET位为1 if(Freq_SFR==0) //把数据设置到设置频率寄存器0 { frequence_LSB=frequence_LSB|0x4000; frequence_MSB=frequence_MSB|0x4000; //使用频率寄存器0输出波形 AD9833_Write(frequence_LSB); //L14,选择频率寄存器0的低14位数据输入 AD9833_Write(frequence_MSB); //H14 频率寄存器的高14位数据输入 AD9833_Write(Phs_data); //设置相位 //AD9833_Write(0x2000); /**设置FSELECT位为0,芯片进入工作状态,频率寄存器0输出波形**/ } if(Freq_SFR==1) //把数据设置到设置频率寄存器1 { frequence_LSB=frequence_LSB|0x8000; frequence_MSB=frequence_MSB|0x8000; //使用频率寄存器1输出波形 AD9833_Write(frequence_LSB); //L14,选择频率寄存器1的低14位输入 AD9833_Write(frequence_MSB); //H14 频率寄存器1为 AD9833_Write(Phs_data); //设置相位 //AD9833_Write(0x2800); /**设置FSELECT位为0,设置FSELECT位为1,即使用频率寄存器1的值,芯片进入工作状态,频率寄存器1输出波形**/ } if(WaveMode==TRI_WAVE) //输出三角波波形 AD9833_Write(0x2002); if(WaveMode==SQU_WAVE) //输出方波波形 AD9833_Write(0x2028); if(WaveMode==SIN_WAVE) //输出正弦波形 AD9833_Write(0x2000); } /* USER CODE BEGIN Header */ /** ****************************************************************************** * @file : main.c * @brief : Main program body ****************************************************************************** * @attention * * Copyright (c) 2025 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** */ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "main.h" #include "tim.h" #include "gpio.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include "OLED.h" #include "led.h" #include "interrupt.h" #include "ad9833.h" /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ /* USER CODE BEGIN PTD */ /* USER CODE END PTD */ /* Private define ------------------------------------------------------------*/ /* USER CODE BEGIN PD */ /* USER CODE END PD */ /* Private macro -------------------------------------------------------------*/ /* USER CODE BEGIN PM */ /* USER CODE END PM */ /* Private variables ---------------------------------------------------------*/ /* USER CODE BEGIN PV */ extern float timenum_tim1; /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); /* USER CODE BEGIN PFP */ /* USER CODE END PFP */ /* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ /* USER CODE END 0 */ /** * @brief The application entry point. * @retval int */ int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_TIM1_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ OLED_Init(); HAL_TIM_Base_Start_IT(&htim1); // beep_on(); AD9833_WaveSeting(1000.0, 0, SIN_WAVE, 0); //void AD9833_Init_GPIO(void); AD9833_AmpSet(100); OLED_ShowString(2, 1, "sad"); while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ // if(timenum_tim1>2) // { // HAL_Delay(500); // led_off(); // HAL_Delay(500); // } // beep_on(); // HAL_Delay(500); // beep_off(); // HAL_Delay(500); } /* USER CODE END 3 */ } /** * @brief System Clock Configuration * @retval None */ void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; /** Configure the main internal regulator output voltage */ __HAL_RCC_PWR_CLK_ENABLE(); __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLM = 4; RCC_OscInitStruct.PLL.PLLN = 168; RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; RCC_OscInitStruct.PLL.PLLQ = 4; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { Error_Handler(); } /** Initializes the CPU, AHB and APB buses clocks */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) { Error_Handler(); } } /* USER CODE BEGIN 4 */ /* USER CODE END 4 */ /** * @brief This function is executed in case of error occurrence. * @retval None */ void Error_Handler(void) { /* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */ __disable_irq(); while (1) { } /* USER CODE END Error_Handler_Debug */ } #ifdef USE_FULL_ASSERT /** * @brief Reports the name of the source file and the source line number * where the assert_param error has occurred. * @param file: pointer to the source file name * @param line: assert_param error line source number * @retval None */ void assert_failed(uint8_t *file, uint32_t line) { /* USER CODE BEGIN 6 */ /* User can add his own implementation to report the file name and line number, ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* USER CODE END 6 */ } #endif /* USE_FULL_ASSERT */ 中改变AD9833_AmpSet(100); 的参数输出幅值没有变化

洋林
  • 粉丝: 41
上传资源 快速赚钱