【STM32G431RBTx】备战蓝桥杯嵌入式→决赛试题→第七届
文章目录
- 前言
- 一、题目
- 二、模块初始化
- 三、代码实现
- interrupt.h:
- interrupt.h:
- main.h:
- main.h:
- 四、完成效果
- 五、总结
前言
无
一、题目



二、模块初始化
1.LCD这里不用配置,直接使用提供的资源包就行
2.ADC:开启ADCsingle-ended
3.LED:开启PC8-15,PD2输出模式就行了。
4.定时器:TIM3(按键消抖定时器):PSC:80-1,ARR:10000-1,TIM17(输入捕获定时器):PSC:80,ARR:65535,TIM2CH2(PWM输出定时器):PSC:800-1,ARR:100-1
5.i2c:设置PB6,PB7为GPIO_Output模式即可
6.打开串口串行输出
三、代码实现
bsp组中共有:

interrupt.h:
#ifndef __INTERRUPT_H__
#define __INTERRUPT_H__#include "main.h"
#include "stdbool.h"struct keys
{bool key_sta;unsigned char key_judge;bool single_flag;unsigned int key_time;bool long_flag;
};#endif
interrupt.h:
#include "interrupt.h"struct keys key[4] = {0, 0, 0, 0, 0};void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef * htim)
{if(htim->Instance == TIM3){key[0].key_sta = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0);key[1].key_sta = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1);key[2].key_sta = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_2);key[3].key_sta = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0);for(unsigned char i = 0; i < 4; i++){switch(key[i].key_judge){case 0:{if(key[i].key_sta == 0){key[i].key_time = 0;key[i].key_judge = 1;}break;}case 1:{if(key[i].key_sta == 0){key[i].key_judge = 2;}else{key[i].key_judge = 0;}break;}case 2:{if(key[i].key_sta == 1){key[i].key_judge = 0;if(key[i].key_time < 80){key[i].single_flag = 1;}}else{key[i].key_time++;if(key[i].key_time >= 80){key[i].long_flag = 1;}}break;}}}}
}/* Captured Values */
uint32_t uwIC1Value1_T17CH1 = 0;
uint32_t uwIC1Value2_T17CH1 = 0;
uint32_t uwLowCapture_T17CH1 = 0;
uint32_t uwHighCapture_T17CH1 = 0;/* Capture index */
uint16_t uhCaptureIndex_T17CH1 = 0;/* Frequency Value */
uint32_t uwFrequency_T17CH1 = 0;
double uwDuty_T17CH1 = 0;void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{if(htim->Instance == TIM17){if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1){if(uhCaptureIndex_T17CH1 == 0){/* Get the 1st Input Capture value */uwIC1Value1_T17CH1 = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1);__HAL_TIM_SET_CAPTUREPOLARITY(htim, TIM_CHANNEL_1, TIM_INPUTCHANNELPOLARITY_FALLING);uhCaptureIndex_T17CH1 = 1;}else if(uhCaptureIndex_T17CH1 == 1){/* Get the 2nd Input Capture value */uwIC1Value2_T17CH1 = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1); __HAL_TIM_SET_CAPTUREPOLARITY(htim, TIM_CHANNEL_1, TIM_INPUTCHANNELPOLARITY_RISING);/* Capture computation */if (uwIC1Value2_T17CH1 > uwIC1Value1_T17CH1){uwHighCapture_T17CH1 = (uwIC1Value2_T17CH1 - uwIC1Value1_T17CH1); }else if (uwIC1Value2_T17CH1 < uwIC1Value1_T17CH1){/* 0xFFFF is max TIM1_CCRx value */uwHighCapture_T17CH1 = ((0xFFFF - uwIC1Value1_T17CH1) + uwIC1Value2_T17CH1) + 1;}else{/* If capture values are equal, we have reached the limit of frequencymeasures */Error_Handler();}uwIC1Value1_T17CH1 = uwIC1Value2_T17CH1;uhCaptureIndex_T17CH1 = 2;/* Frequency computation: for this example TIMx (TIM1) is clocked byAPB2Clk */ }else if(uhCaptureIndex_T17CH1 == 2){uwIC1Value2_T17CH1 = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1); if (uwIC1Value2_T17CH1 > uwIC1Value1_T17CH1){uwLowCapture_T17CH1 = (uwIC1Value2_T17CH1 - uwIC1Value1_T17CH1); }else if (uwIC1Value2_T17CH1 < uwIC1Value1_T17CH1){/* 0xFFFF is max TIM1_CCRx value */uwLowCapture_T17CH1 = ((0xFFFF - uwIC1Value1_T17CH1) + uwIC1Value2_T17CH1) + 1;}uwFrequency_T17CH1 = 1000000 / (uwLowCapture_T17CH1 + uwHighCapture_T17CH1);uwDuty_T17CH1 = uwHighCapture_T17CH1 * 100.0 / (uwLowCapture_T17CH1 + uwHighCapture_T17CH1) ;uhCaptureIndex_T17CH1 = 0;}}}
}char RxBuffer[30];
unsigned char BufIndex = 0;
unsigned char Rxdat;void HAL_UART_RxCpltCallback(UART_HandleTypeDef * huart)
{if(huart->Instance == USART1){RxBuffer[BufIndex++] = Rxdat;HAL_UART_Receive_IT(huart, &Rxdat, 1);}
}
main.h:
/* USER CODE BEGIN Header */
/********************************************************************************* @file : main.h* @brief : Header for main.c file.* This file contains the common defines of the application.******************************************************************************* @attention** Copyright (c) 2023 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 *//* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __MAIN_H
#define __MAIN_H#ifdef __cplusplus
extern "C" {
#endif/* Includes ------------------------------------------------------------------*/
#include "stm32g4xx_hal.h"/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes *//* USER CODE END Includes *//* Exported types ------------------------------------------------------------*/
/* USER CODE BEGIN ET *//* USER CODE END ET *//* Exported constants --------------------------------------------------------*/
/* USER CODE BEGIN EC *//* USER CODE END EC *//* Exported macro ------------------------------------------------------------*/
/* USER CODE BEGIN EM *//* USER CODE END EM *//* Exported functions prototypes ---------------------------------------------*/
void Error_Handler(void);/* USER CODE BEGIN EFP *//* USER CODE END EFP *//* Private defines -----------------------------------------------------------*//* USER CODE BEGIN Private defines */
#define DATA 0
#define PARA 1
/* USER CODE END Private defines */#ifdef __cplusplus
}
#endif#endif /* __MAIN_H */
main.h:
/* USER CODE BEGIN Header */
/********************************************************************************* @file : main.c* @brief : Main program body******************************************************************************* @attention** Copyright (c) 2023 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 "adc.h"
#include "rtc.h"
#include "tim.h"
#include "usart.h"
#include "gpio.h"/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "lcd.h"
#include "interrupt.h"
#include "stdio.h"
#include "badc.h"
#include "led.h"
#include "i2c.h"
#include "stdlib.h"
#include "string.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 */
char text[30];
extern struct keys key[4];
double volt_adc2;
extern uint32_t uwFrequency_T17CH1;
extern double uwDuty_T17CH1;
double T, H;
double k1 = 80 / 3.3;
double b1 = -20;
double k2 = 80 / 9.0;
double b2 = 10 - 80 / 9.0;
unsigned int getTick;
double Ttemp[60];
double Htemp[60];
unsigned char count;
unsigned char getOverFlag = 1;
unsigned char eeprom_readData;
unsigned char eeprom_writeData;
RTC_TimeTypeDef Trtc;
RTC_DateTypeDef Drtc;
unsigned char Second = 61;
unsigned int MarkCount;
unsigned char DisplayMode;
unsigned int getTimeMs = 1000;
int Tthresold = 40;
int Hthresold = 80;
unsigned int PA1_Fre = 1000;
unsigned char SettingIndex;
extern char RxBuffer[30];
extern unsigned char BufIndex;
extern unsigned char Rxdat;
unsigned char LD1FlashFlag;
unsigned char LD2FlashFlag;
unsigned char LD1FlashTick;
unsigned char LD2FlashTick;
unsigned char LD1FlashType;
unsigned char LD2FlashType;
unsigned char LD3FlashType;
unsigned char LED;
/* USER CODE END PV *//* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */
void DisposeKey(void);
void LCD_Disp(void);
void Rx_Proc(void);
void LED_Control(void);
/* 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_ADC2_Init();MX_RTC_Init();MX_TIM2_Init();MX_TIM3_Init();MX_TIM17_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 */LCD_Init();LCD_Clear(Black);LCD_SetBackColor(Black);LCD_SetTextColor(White);Tthresold = eeprom_read(0) - 20;Hthresold = eeprom_read(1);getTimeMs = eeprom_read(2) * 1000;PA1_Fre = eeprom_read(3) * 100;__HAL_TIM_SET_PRESCALER(&htim2, 80000000 / 100 / PA1_Fre);HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2);HAL_TIM_IC_Start_IT(&htim17, TIM_CHANNEL_1);getADC(&hadc2);HAL_Delay(2);for(unsigned char i = 0; i < 60; i++){double Tsum = 0;double Hsum = 0;volt_adc2 = getADC(&hadc2) * 3.3 / 4096;Ttemp[i] = k1 * volt_adc2 + b1;Tsum += Ttemp[i];Htemp[i] = uwFrequency_T17CH1 / 1000.0 * k2 + b2;Hsum += Htemp[i];if(i == 59){T = Tsum / 60.0;H = Hsum / 60.0;}}HAL_TIM_Base_Start_IT(&htim3);HAL_UART_Receive_IT(&huart1, &Rxdat, 1);LED_Disp(0x00);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_RTC_GetDate(&hrtc, &Drtc, RTC_FORMAT_BIN);HAL_RTC_GetTime(&hrtc, &Trtc, RTC_FORMAT_BIN);if(uwTick - getTick > getTimeMs / 60){getTick = uwTick;volt_adc2 = getADC(&hadc2) * 3.3 / 4096;Ttemp[count] = k1 * volt_adc2 + b1;Htemp[count] = uwFrequency_T17CH1 / 1000.0 * k2 + b2;count++;if(count == 60){count = 0;getOverFlag = 1;}}if(uwTick - LD1FlashTick > 100){if(LD1FlashFlag){LD1FlashType = !LD1FlashType;LED = LED & 0xfe | (LD1FlashType << 0);}}if(uwTick - LD2FlashTick > 100){if(LD2FlashFlag){LD2FlashType = !LD2FlashType;LED = LED & 0xfd | (LD2FlashType << 1);}}if(getOverFlag){getOverFlag = 0;for(unsigned char i = 0; i < 60; i++){T += Ttemp[i];H += Htemp[i];}T = T / 60.0;H = H / 60.0;MarkCount++;LD3FlashType = !LD3FlashType;LED = LED & 0xfb | (LD3FlashType << 2);}if(BufIndex != 0){unsigned char temp = BufIndex;HAL_Delay(1);if(BufIndex == temp)Rx_Proc();}DisposeKey();LCD_Disp();LED_Control();LED_Disp(LED);}/* 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_PWREx_ControlVoltageScaling(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 = RCC_PLLM_DIV3;RCC_OscInitStruct.PLL.PLLN = 20;RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2;RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;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_DIV1;RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK){Error_Handler();}
}/* USER CODE BEGIN 4 */
void DisposeKey(void)
{if(key[0].single_flag){LCD_Clear(Black);if(DisplayMode == DATA){DisplayMode = PARA;}else if(DisplayMode == PARA){DisplayMode = DATA;eeprom_write(0, Tthresold + 20);HAL_Delay(10);eeprom_write(1, Hthresold);HAL_Delay(10);eeprom_write(2, getTimeMs / 1000);HAL_Delay(10);eeprom_write(3, PA1_Fre / 100);}key[0].single_flag = 0;}if(key[1].single_flag){SettingIndex++;SettingIndex %= 4;key[1].single_flag = 0;}if(key[2].single_flag){if(SettingIndex == 0){if(Tthresold + 1 <= 60)Tthresold++;}else if(SettingIndex == 1){if(Hthresold + 5 <= 90)Hthresold += 5;}else if(SettingIndex == 2){if(getTimeMs + 1000 <= 5000)getTimeMs += 1000;}else if(SettingIndex == 3){if(PA1_Fre + 500 <= 10000){PA1_Fre += 500;__HAL_TIM_SET_PRESCALER(&htim2, 80000000 / 100 / PA1_Fre);}}key[2].single_flag = 0;}if(key[3].single_flag){if(SettingIndex == 0){if(Tthresold - 1 >= -20)Tthresold--;}else if(SettingIndex == 1){if(Hthresold - 5 >= 10)Hthresold -= 5;}else if(SettingIndex == 2){if(getTimeMs - 1000 >= 1000)getTimeMs -= 1000;}else if(SettingIndex == 3){if(PA1_Fre - 500 >= 1000){PA1_Fre -= 500;__HAL_TIM_SET_PRESCALER(&htim2, 80000000 / 100 / PA1_Fre);}}key[3].single_flag = 0;}
}void LCD_Disp(void)
{if(DisplayMode == DATA){LCD_DisplayStringLine(Line1, " DATA");sprintf(text, "T: %dC ", (int)T);LCD_DisplayStringLine(Line3, text);sprintf(text, "H: %d%%", (int)H);LCD_DisplayStringLine(Line5, text);if(Second != Trtc.Seconds){sprintf(text, "RTC: %02d-%02d-%02d", Trtc.Hours, Trtc.Minutes, Trtc.Seconds);LCD_DisplayStringLine(Line7, text);}sprintf(text, " MarkCount:%d", MarkCount);LCD_DisplayStringLine(Line9, text);}if(DisplayMode == PARA){LCD_DisplayStringLine(Line1, " PARA");sprintf(text, " Tthresold :%dC ", Tthresold);if(SettingIndex == 0)LCD_SetTextColor(Green);LCD_DisplayStringLine(Line3, text);LCD_SetTextColor(White);sprintf(text, " Hthresold :%d%% ", Hthresold);if(SettingIndex == 1)LCD_SetTextColor(Green);LCD_DisplayStringLine(Line5, text);LCD_SetTextColor(White);sprintf(text, " geTime :%dS", getTimeMs / 1000);if(SettingIndex == 2)LCD_SetTextColor(Green);LCD_DisplayStringLine(Line7, text);LCD_SetTextColor(White);sprintf(text, " testFre :%.1fKHz ", PA1_Fre / 1000.0);if(SettingIndex == 3)LCD_SetTextColor(Green);LCD_DisplayStringLine(Line9, text);LCD_SetTextColor(White);}
}void Rx_Proc(void)
{if(BufIndex == 1){if(RxBuffer[0] == 'C'){printf("%02d-%02d-%02d:Tthresohold:%dC, Hthresold:%d%%\n", Trtc.Hours, Trtc.Minutes, Trtc.Seconds, Tthresold, Hthresold);}if(RxBuffer[0] == 'T'){for(unsigned char i = 0; i < 60; i++){printf("%02d-%02d-%02d:Ttemp[%d]:%.2fC, Htemp[%d]:%.2f%%\n", Trtc.Hours, Trtc.Minutes, Trtc.Seconds, i, Ttemp[i], i, Htemp[i]);}}}BufIndex = 0;memset(RxBuffer, 0, 30);
}int fputc(int ch, FILE * f)
{HAL_UART_Transmit(&huart1, (unsigned char *)&ch, 1, HAL_MAX_DELAY);return ch;
}void LED_Control(void)
{if(T > (double)Tthresold){LD1FlashFlag = 1;}else{LD1FlashFlag = 0;LD1FlashType = 0;LD1FlashTick = uwTick;LED = LED & 0xfe;}if(H > (double)Hthresold){LD2FlashFlag = 1;}else{LD2FlashFlag = 0;LD2FlashType = 0;LD2FlashTick = uwTick;LED = LED & 0xfd;}
}
/* 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 */
四、完成效果
蓝桥杯嵌入式第七届国赛试题实现效果
五、总结
本篇文章只是为了存放我的代码,所以看不懂很正常,如果需要代码可以找我私信。
相关文章:
【STM32G431RBTx】备战蓝桥杯嵌入式→决赛试题→第七届
文章目录 前言一、题目二、模块初始化三、代码实现interrupt.h:interrupt.h:main.h:main.h: 四、完成效果五、总结 前言 无 一、题目 二、模块初始化 1.LCD这里不用配置,直接使用提供的资源包就行 2.ADC:开启ADCsingle-ended 3.LED:开启PC8-15,PD2输出模式就行了…...
Java日期时间调整的几种方式
一、Calendar类 我们现在已经能够格式化并创建一个日期对象了,但是我们如何才能设置和获取日期数据的特定部分呢,比如说小时,日,或者分钟? 我们又如何在日期的这些部分加上或者减去值呢? 答案是使用Calendar 类。 Calendar类的…...
如何在Windows 11更新后解决C盘已满的问题?
Windows 11比Windows 10需要占用C盘更多的空间,在升级到Windows 11后,如果升级后出现问题,安装程序可以帮你退回到Windows 10。无论怎样,在升级到Windows 11后,系统会自动制作以前的数据的副本,这会占用大量…...
DJ6-1/2/3 文件系统
目录 6.1 文件系统概述 6.1.1 文件、记录和数据项 6.1.2 文件类型 6.1.3 文件系统模型 6.1.4 对文件的操作 6.2 文件的逻辑结构 6.2.1 文件逻辑结构的类型 6.2.2 顺序文件(Sequential File) 6.2.4 索引文件(Index File&…...
华为OD机试真题 Java 实现【打印文件】【2023Q1 100分】
一、题目描述 有 5 台打印机打印文件,每台打印机有自己的待打印队列。 因为打印的文件内容有轻重缓急之分,所以队列中的文件有1~10不同的优先级,其中数字越大优先级越高。 打印机会从自己的待打印队列中选择优先级最高的文件来打印。 如果存在两个优先级一样的文件,则选…...
基于LSB实现文本、图片、压缩包的隐藏
关于LSB的相关介绍: LSB全称为 Least Significant Bit(最低有效位),是一种基于图片最低有效位修改储存信息的隐写方法,在CTF杂项中经常会遇到,LSB属于空域算法中的一种,是将信息嵌入到图像点中…...
(万字长文)Linux——IO之重定向+缓冲区 +重定向 +缓冲区原理实现 +带重定向的简易版shell+标准输出标准错误
索引 文件描述符分配规则重定向 缓冲区1.什么是缓冲区2.缓冲区在哪里 重定向源码模拟实现缓冲区原理带重定向的简易版Xshell标准输入和标准错误 文件描述符分配规则 文件描述符的分配规则 从头遍历数组fd_array[],找到一个最小的,没有被使用的下标,分配…...
面试:js 延迟加载方式
相关知识点: js 延迟加载,也就是等页面加载完成之后再加载 JavaScript 文件。 js 延迟加载有助于提高页面加载速度 一般有以下几种方式: defer 属性 async 属性 动态创建 DOM 方式 使用 setTimeout 延迟方法 让 JS 最后加载 js 的加载…...
将Oracle数据文件导入SQL Server的方法
审计过程中,采集的业务数据有Oracle备份数据,备份文件的后缀名为.dmp。如何将*.dmp文件导入审计人员熟悉的SQL Server中呢?以下是现场审计数据导入方法介绍。 一、将*.dmp文件导入oracle数据库 *.dmp文件为Oracle数据库备份文件,因…...
《汇编语言》- 读书笔记 - 实验5 编写、调试具有多个段的程序
《汇编语言》- 读书笔记 - 实验5 编写、调试具有多个段的程序 题目1题目2题目3题目4题目5题目6总结 题目1 将下面的程序编译、连接,用 Debug 加载、跟踪,然后回答问题 assume cs:code, ds:data, ss:stack data segmentdw 0123h,0456h,0789h,0abch,0def…...
剑指offer -- 二维数组中的查找
二维数组中的查找_牛客题霸_牛客网 (nowcoder.com) 暴力查找法: 是一种简单直接的解决方法,可以用于在二维数组中查找目标值。该方法的思路是遍历数组的每个元素,逐个与目标值进行比较。 具体步骤如下: 从数组的第一行第一列开始,…...
3. 自然语言处理NLP:具体用途(近义词类比词;情感分类;机器翻译)
一、求近义词和类比词 1. 近义词 方法一:在嵌入模型后,可以根据两个词向量的余弦相似度表示词与词之间在语义上的相似度。 方法二:KNN(K近邻) 2. 类比词 使用预训练词向量求词与词之间的类比关系。eg:man&a…...
Hibernate的FlushMode
一、Session中FlushMode的设置: 在事务开启前设置FlushMode属性,方法: // session.setFlushMode(FlushMode.Always|AUTO|COMMIT|NEVER|MANUAL)。Service public class TestService {Logger log LoggerFactory.getLogger(getClass());AutowiredEntityM…...
二线程序员的出路
最近长沙不太平。去年被动离职一拨人之后,HR一直强调降本增效,人人自危,挤走一拨人,反正会有大量内卷失败的一线程序员进来填坑。当然留就有人走,前同事除了几个出去搞培训创业(后面解散了)的之…...
MKS SERVO4257D 闭环步进电机_系列2 菜单说明
第1部分 产品介绍 MKS SERVO 28D/35D/42D/57D 系列闭环步进电机是创客基地为满足市场需求而自主研发的一款产品。具备脉冲接口和RS485/CAN串行接口,支持MODBUS-RTU通讯协议,内置高效FOC矢量算法,采用高精度编码器,通过位置反馈&am…...
使用Actor-Critic的DDPG强化学习算法控制双关节机械臂
在本文中,我们将介绍在 Reacher 环境中训练智能代理控制双关节机械臂,这是一种使用 Unity ML-Agents 工具包开发的基于 Unity 的模拟程序。 我们的目标是高精度的到达目标位置,所以这里我们可以使用专为连续状态和动作空间设计的最先进的Deep…...
黑马学生入职B站1年,晒出21K月薪:我想跳槽华为
现在的Z时代,嘴上说着不要,身体却很诚实。 前两天,黑马发布了《2022年度互联网平均薪资出炉!高到离谱!》,信息传输、软件和信息技术服务业薪资遥遥领先!Z时代举头望着天花板,故作潇…...
一文看懂GPT风口,都有哪些创业机会?
新时代的淘金者,低附加价值的创业要谨慎,高附加价值、低技术门槛创业也要谨慎,主干道边上的创业也要谨慎。不少朋友看完不淡定了,干什么都谨慎,回家躺平好了,我有个朋友,靠ChatGPT,半…...
chatgpt赋能python:Python中的不确定尾数问题
Python中的不确定尾数问题 Python作为一种高级编程语言,被广泛应用于数据科学、机器学习、Web开发等众多领域。然而,Python在处理浮点数时会出现一些不确定尾数的问题,给程序员和数据分析员带来不少麻烦。本篇文章将介绍Python中不确定尾数的…...
杜绝开源依赖风险,许可证扫描让高效合规「两不误」
目录 开源许可证及其常见类型 开源许可证扫描是软件研发过程中,不可或缺的工具 极狐GitLab 开源许可证扫描的优势与应用 Step 1:启用及设置许可证策略 Step 2:自动创建策略文件存放项目 Step 3:查看许可证合规情况 Step 4&…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
OD 算法题 B卷【正整数到Excel编号之间的转换】
文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的:a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...
