ARM-定時器-定時器函數封裝配置

?以TIMER7為例,對定時器函數進行封裝

注意事項:GD32中TIMER7是高級定時器,相關詳細請參考上一篇文章。

?main.c

//main.c#include "gd32f4xx.h"
#include "systick.h"
#include <stdio.h>
#include "main.h"
#include "Usart0.h"
#include "Timer.h"float duty0 = 0;
float duty1 = 0;
float duty2 = 0;void Usart0_on_recv(uint8_t* data, uint32_t len) {printf("recv: %s\r\n", data);if(data[0] == 0x00) {// T2 ch0 +Timer7_ch0_update(duty0++);} else if(data[0] == 0x01) {// T2 ch0 -Timer7_ch0_update(duty0--);} else if(data[0] == 0x02) {// T2 ch1 +Timer7_ch1_update(duty1++);} else if(data[0] == 0x03) {// T2 ch1 -Timer7_ch1_update(duty1--);} else if(data[0] == 0x04) {// T2 ch2 +Timer7_ch2_update(duty2++);} else if(data[0] == 0x05) {// T2 ch2 -Timer7_ch2_update(duty2--);}
}int main(void)
{systick_config();Usart0_init();Timer_init();while(1) {}
}

關心的內容

該代碼中,data[0] == 0x00?等等是用來檢查通過 USART0 (串口0) 接收到的數據的第一個字節是否為?0x00。這個?data?數組是通過?Usart0_on_recv?函數的參數傳入的,而這個函數看起來是一個串口接收回調函數。?

Timer7.c?

//Timer7.c#include "Timer7.h"
#if USE_TIMER_7void Timer7_init() {// T7 ch0 ch1 ch2 ch3// PC6 PC7 PC8//哪個定時器uint32_t timer_rcu = RCU_TIMER7;uint32_t timer = TIMER7;//		uint32_t timer_rcu_psc = RCU_TIMER_PSC_MUL4;// 倍頻//定時器周期和分頻uint32_t timer_param_psc = TIMER7_PSC;uint32_t timer_param_period = TIMER7_PERIOD;/******************** GPIO *********************************/// // PC6 PC7 PC8
//////////// ch0
#if TIMER7_CH0_ENABLE// P和N
#if TIMER7_CH0_P_ENABLE// gpio初始化 ch0rcu_periph_clock_enable(TIMER7_CH0_P_PORT_RCU);gpio_mode_set(TIMER7_CH0_P_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, TIMER7_CH0_P_PIN);gpio_output_options_set(TIMER7_CH0_P_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_MAX, TIMER7_CH0_P_PIN);gpio_af_set(TIMER7_CH0_P_PORT, TIMER7_CH0_P_AF, TIMER7_CH0_P_PIN);
#endif
#if TIMER7_CH0_N_ENABLE// gpio初始化 ch0rcu_periph_clock_enable(TIMER7_CH0_N_PORT_RCU);gpio_mode_set(TIMER7_CH0_N_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, TIMER7_CH0_N_PIN);gpio_output_options_set(TIMER7_CH0_N_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_MAX, TIMER7_CH0_N_PIN);gpio_af_set(TIMER7_CH0_N_PORT, TIMER7_CH0_N_AF, TIMER7_CH0_N_PIN);
#endif
#endif//////////// ch1
#if TIMER7_CH1_ENABLE// P和N
#if TIMER7_CH1_P_ENABLE// gpio初始化 ch0rcu_periph_clock_enable(TIMER7_CH1_P_PORT_RCU);gpio_mode_set(TIMER7_CH1_P_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, TIMER7_CH1_P_PIN);gpio_output_options_set(TIMER7_CH1_P_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_MAX, TIMER7_CH1_P_PIN);gpio_af_set(TIMER7_CH1_P_PORT, TIMER7_CH1_P_AF, TIMER7_CH1_P_PIN);
#endif
#if TIMER7_CH1_N_ENABLE// gpio初始化 ch0rcu_periph_clock_enable(TIMER7_CH1_N_PORT_RCU);gpio_mode_set(TIMER7_CH1_N_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, TIMER7_CH1_N_PIN);gpio_output_options_set(TIMER7_CH1_N_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_MAX, TIMER7_CH1_N_PIN);gpio_af_set(TIMER7_CH1_N_PORT, TIMER7_CH1_N_AF, TIMER7_CH1_N_PIN);
#endif
#endif
//////////// ch2
#if TIMER7_CH2_ENABLE// P和N
#if TIMER7_CH2_P_ENABLE// gpio初始化 ch0rcu_periph_clock_enable(TIMER7_CH2_P_PORT_RCU);gpio_mode_set(TIMER7_CH2_P_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, TIMER7_CH2_P_PIN);gpio_output_options_set(TIMER7_CH2_P_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_MAX, TIMER7_CH2_P_PIN);gpio_af_set(TIMER7_CH2_P_PORT, TIMER7_CH2_P_AF, TIMER7_CH2_P_PIN);
#endif
#if TIMER7_CH2_N_ENABLE// gpio初始化 ch0rcu_periph_clock_enable(TIMER7_CH2_N_PORT_RCU);gpio_mode_set(TIMER7_CH2_N_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, TIMER7_CH2_N_PIN);gpio_output_options_set(TIMER7_CH2_N_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_MAX, TIMER7_CH2_N_PIN);gpio_af_set(TIMER7_CH2_N_PORT, TIMER7_CH2_N_AF, TIMER7_CH2_N_PIN);
#endif
#endif
//////////// ch3
#if TIMER7_CH3_ENABLE// P和N
#if TIMER7_CH3_P_ENABLE// gpio初始化 ch0rcu_periph_clock_enable(TIMER7_CH3_P_PORT_RCU);gpio_mode_set(TIMER7_CH3_P_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, TIMER7_CH3_P_PIN);gpio_output_options_set(TIMER7_CH3_P_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_MAX, TIMER7_CH3_P_PIN);gpio_af_set(TIMER7_CH3_P_PORT, TIMER7_CH3_P_AF, TIMER7_CH3_P_PIN);
#endif
#if TIMER7_CH3_N_ENABLE// gpio初始化 ch0rcu_periph_clock_enable(TIMER7_CH3_N_PORT_RCU);gpio_mode_set(TIMER7_CH3_N_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, TIMER7_CH3_N_PIN);gpio_output_options_set(TIMER7_CH3_N_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_MAX, TIMER7_CH3_N_PIN);gpio_af_set(TIMER7_CH3_N_PORT, TIMER7_CH3_N_AF, TIMER7_CH3_N_PIN);
#endif
#endif/************************ timer ************************/// 初始化定時器相關配置rcu_periph_clock_enable(timer_rcu);timer_deinit(timer);timer_parameter_struct tps;timer_struct_para_init(&tps);//配置默認值// 根據實際需求去修改值tps.prescaler         = timer_param_psc;tps.period            = timer_param_period; // 周期計數(從0開始計數)timer_init(timer, &tps);/*************** timer CH 配置 **********************/timer_oc_parameter_struct tops;// 定時器通道配置  CH0
//////////////// ch0
#if TIMER7_CH0_ENABLEtimer_channel_output_struct_para_init(&tops);// N和P
#if TIMER7_CH0_P_ENABLEtops.outputstate  = TIMER_CCX_ENABLE;tops.ocpolarity   = TIMER_OC_POLARITY_HIGH;
#endif
#if TIMER7_CH0_N_ENABLEtops.outputnstate = TIMER_CCXN_ENABLE;tops.ocnpolarity  = TIMER_OCN_POLARITY_HIGH;
#endiftimer_channel_output_config(timer, TIMER_CH_0 , &tops);timer_channel_output_mode_config(timer, TIMER_CH_0, TIMER_OC_MODE_PWM0);timer_channel_output_pulse_value_config(timer, TIMER_CH_0, 0);//pwm值
#endif
//////////////////////////////////////////
#if TIMER7_CH1_ENABLE// 定時器通道配置  CH1timer_channel_output_struct_para_init(&tops);// N和P
#if TIMER7_CH1_P_ENABLEtops.outputstate  = TIMER_CCX_ENABLE;
#endif
#if TIMER7_CH1_N_ENABLEtops.outputnstate = TIMER_CCXN_ENABLE;
#endiftimer_channel_output_config(timer, TIMER_CH_1 , &tops);timer_channel_output_mode_config(timer, TIMER_CH_1, TIMER_OC_MODE_PWM0);timer_channel_output_pulse_value_config(timer, TIMER_CH_1, 0);//pwm值
#endif
#if TIMER7_CH2_ENABLE// 定時器通道配置  CH2timer_channel_output_struct_para_init(&tops);// N和P
#if TIMER7_CH2_P_ENABLEtops.outputstate  = TIMER_CCX_ENABLE;
#endif
#if TIMER7_CH2_N_ENABLEtops.outputnstate = TIMER_CCXN_ENABLE;
#endiftimer_channel_output_config(timer, TIMER_CH_2 , &tops);timer_channel_output_mode_config(timer, TIMER_CH_2, TIMER_OC_MODE_PWM0);timer_channel_output_pulse_value_config(timer, TIMER_CH_2, 0);//pwm值
#endif
#if TIMER7_CH3_ENABLEtimer_channel_output_struct_para_init(&tops);
#if TIMER7_CH3_P_ENABLEtops.outputstate  = TIMER_CCX_ENABLE;
#endif
#if TIMER7_CH3_N_ENABLEtops.outputnstate = TIMER_CCXN_ENABLE;
#endiftimer_channel_output_config(timer, TIMER_CH_3 , &tops);timer_channel_output_mode_config(timer, TIMER_CH_3, TIMER_OC_MODE_PWM0);timer_channel_output_pulse_value_config(timer, TIMER_CH_3, 0);//pwm值
#endif//只針對高級定時器,break,保護電路,打開break電路timer_break_parameter_struct tbps;timer_break_struct_para_init(&tbps);tbps.breakpolarity   = TIMER_BREAK_POLARITY_HIGH;tbps.outputautostate = TIMER_OUTAUTO_ENABLE;tbps.breakstate      = TIMER_BREAK_ENABLE;timer_break_config(timer, &tbps);timer_break_enable(timer);timer_enable(timer);
}#if TIMER7_CH0_ENABLE
void Timer7_ch0_update(float duty){uint32_t timer = TIMER7;if(duty > 100) duty = 100;if(duty < 0) duty = 0;uint32_t  count = TIMER7_PERIOD + 1;uint32_t pulse = count * duty / 100 - 1;//計數值timer_channel_output_pulse_value_config(timer, TIMER_CH_0, pulse);//pwm值
}
#endif#if TIMER7_CH1_ENABLE
void Timer7_ch1_update(float duty){uint32_t timer = TIMER7;if(duty > 100) duty = 100;if(duty < 0) duty = 0;uint32_t  count = TIMER7_PERIOD + 1;uint32_t pulse = count * duty / 100 - 1;//計數值timer_channel_output_pulse_value_config(timer, TIMER_CH_1, pulse);//pwm值
}
#endif#if TIMER7_CH2_ENABLE
void Timer7_ch2_update(float duty){uint32_t timer = TIMER7;if(duty > 100) duty = 100;if(duty < 0) duty = 0;uint32_t  count = TIMER7_PERIOD + 1;uint32_t pulse = count * duty / 100 - 1;//計數值timer_channel_output_pulse_value_config(timer, TIMER_CH_2, pulse);//pwm值
}
#endif#if TIMER7_CH3_ENABLE
void Timer7_ch3_update(float duty){uint32_t timer = TIMER7;if(duty > 100) duty = 100;if(duty < 0) duty = 0;uint32_t  count = TIMER7_PERIOD + 1;uint32_t pulse = count * duty / 100 - 1;//計數值timer_channel_output_pulse_value_config(timer, TIMER_CH_3, pulse);//pwm值
}
#endif#endif

關心的內容

?TIMER7高級定時器,四通道

這里的引腳分為P和N類型,不同引腳要配置不同的輸出狀態

所以封裝過程中需要分類

P、N配置

?Timer7.h

//Timer7.h#ifndef __TIMER_7_H__
#define __TIMER_7_H__#include "Timer_config.h"#if USE_TIMER_7// 1. 基本timer,有中斷函數
// 2. timer, 控制多個通道的duty變化
// 3. timer, 控制周期頻率動態變化
// 4. ARM中有很多timervoid Timer7_init();#if TIMER7_CH0_ENABLE
void Timer7_ch0_update(float duty);
#endif#if TIMER7_CH1_ENABLE
void Timer7_ch1_update(float duty);
#endif#if TIMER7_CH2_ENABLE
void Timer7_ch2_update(float duty);
#endif#if TIMER7_CH3_ENABLE
void Timer7_ch3_update(float duty);
#endif#endif
#endif

?Timer_config.h

//Timer_config.h#ifndef __TIMER_CONFIG_H__
#define __TIMER_CONFIG_H__#include "gd32f4xx.h"
#include "systick.h"#define USE_TIMER_0  	0
#define USE_TIMER_1  	0
#define USE_TIMER_2  	0
#define USE_TIMER_3  	0
#define USE_TIMER_4  	0
#define USE_TIMER_5  	0
#define USE_TIMER_6  	0
#define USE_TIMER_7  	1
#define USE_TIMER_8  	0
#define USE_TIMER_9  	0
#define USE_TIMER_10  0
#define USE_TIMER_11  0
#define USE_TIMER_12  0
#define USE_TIMER_13  0/*************** Timer 0 *************/
/*************** Timer 1 *************/
/*************** Timer 2 *************/
#if USE_TIMER_2
// 0: output	1: base timer		2: input
#define TIMER2_FUNC	0#if TIMER2_FUNC == 0
#define TIMER2_CH0_ENABLE 1
#define TIMER2_CH1_ENABLE 1
#define TIMER2_CH2_ENABLE 1
#define TIMER2_CH3_ENABLE 0
#endif/**
* TIMER2_PSC			(10 - 1)
* TIMER2_PERIOD		(SystemCoreClock / 10000 - 1)
* 表示10秒執行10000次
*/
#define TIMER2_PSC			(1 - 1)
#define TIMER2_PERIOD		(SystemCoreClock / 10000 - 1)#if TIMER2_CH0_ENABLE
// PA6(AF2),PB4(AF2),PC6(AF2)
#define TIMER2_CH0_PORT_RCU		RCU_GPIOC
#define TIMER2_CH0_PORT				GPIOC
#define TIMER2_CH0_PIN				GPIO_PIN_6
#define TIMER2_CH0_AF					GPIO_AF_2
#endif#if TIMER2_CH1_ENABLE
//PA7,PB5,PC7
#define TIMER2_CH1_PORT_RCU		RCU_GPIOC
#define TIMER2_CH1_PORT				GPIOC
#define TIMER2_CH1_PIN				GPIO_PIN_7
#define TIMER2_CH1_AF					GPIO_AF_2
#endif#if TIMER2_CH2_ENABLE
//PB0,PC8
#define TIMER2_CH2_PORT_RCU		RCU_GPIOC
#define TIMER2_CH2_PORT				GPIOC
#define TIMER2_CH2_PIN				GPIO_PIN_8
#define TIMER2_CH2_AF					GPIO_AF_2
#endif#if TIMER2_CH3_ENABLE
//PB1,PC9
#define TIMER2_CH3_PORT_RCU		RCU_GPIOC
#define TIMER2_CH3_PORT				GPIOC
#define TIMER2_CH3_PIN				GPIO_PIN_6
#define TIMER2_CH3_AF					GPIO_AF_2
#endif
#endif/***************************************/
/*************** Timer 7 **************/
/**************************************/
#if USE_TIMER_7
// 0: output	1: base timer		2: input
#define TIMER7_FUNC	0#if TIMER7_FUNC == 0
#define TIMER7_CH0_ENABLE 1
#define TIMER7_CH1_ENABLE 1
#define TIMER7_CH2_ENABLE 1
#define TIMER7_CH3_ENABLE 0
#endif#if TIMER7_CH0_ENABLE
#define TIMER7_CH0_P_ENABLE	 1
#define TIMER7_CH0_N_ENABLE	 1
#endif#if TIMER7_CH1_ENABLE
#define TIMER7_CH1_P_ENABLE	 0
#define TIMER7_CH1_N_ENABLE	 1
#endif#if TIMER7_CH2_ENABLE
#define TIMER7_CH2_P_ENABLE	 0
#define TIMER7_CH2_N_ENABLE	 1
#endif#if TIMER7_CH3_ENABLE
#define TIMER7_CH3_P_ENABLE	 0
#define TIMER7_CH3_N_ENABLE	 1
#endif/**
* TIMER2_PSC			(10 - 1)
* TIMER2_PERIOD		(SystemCoreClock / 10000 - 1)
* 表示10秒執行10000次
*/
#define TIMER7_PSC			(1 - 1)
#define TIMER7_PERIOD		(SystemCoreClock / 10000 - 1)//////////////// ch0
#if TIMER7_CH0_P_ENABLE
// PA7(AF3),PB4(AF2),PC6(AF2)
#define TIMER7_CH0_P_PORT_RCU		RCU_GPIOC
#define TIMER7_CH0_P_PORT				GPIOC
#define TIMER7_CH0_P_PIN				GPIO_PIN_6
#define TIMER7_CH0_P_AF					GPIO_AF_3
#endif#if TIMER7_CH0_N_ENABLE
// PA7(AF3),PB4(AF2),PC6(AF2)
#define TIMER7_CH0_N_PORT_RCU		RCU_GPIOA
#define TIMER7_CH0_N_PORT				GPIOA
#define TIMER7_CH0_N_PIN				GPIO_PIN_5
#define TIMER7_CH0_N_AF					GPIO_AF_3
#endif
////////////////////////////////////////////////////////// ch1
#if TIMER7_CH1_P_ENABLE
// PA7(AF3),PB4(AF2),PC6(AF2)
#define TIMER7_CH1_P_PORT_RCU		RCU_GPIOC
#define TIMER7_CH1_P_PORT				GPIOC
#define TIMER7_CH1_P_PIN				GPIO_PIN_6
#define TIMER7_CH1_P_AF					GPIO_AF_3
#endif#if TIMER7_CH1_N_ENABLE
// PA7(AF3),PB4(AF2),PC6(AF2)
#define TIMER7_CH1_N_PORT_RCU		RCU_GPIOA
#define TIMER7_CH1_N_PORT				GPIOA
#define TIMER7_CH1_N_PIN				GPIO_PIN_7
#define TIMER7_CH1_N_AF					GPIO_AF_3
#endif
////////////////////////////////////////////////////////// ch2
#if TIMER7_CH2_P_ENABLE
// PA7(AF3),PB4(AF2),PC6(AF2)
#define TIMER7_CH2_P_PORT_RCU		RCU_GPIOC
#define TIMER7_CH2_P_PORT				GPIOC
#define TIMER7_CH2_P_PIN				GPIO_PIN_6
#define TIMER7_CH2_P_AF					GPIO_AF_3
#endif#if TIMER7_CH2_N_ENABLE
// PA7(AF3),PB4(AF2),PC6(AF2)
#define TIMER7_CH2_N_PORT_RCU		RCU_GPIOA
#define TIMER7_CH2_N_PORT				GPIOA
#define TIMER7_CH2_N_PIN				GPIO_PIN_7
#define TIMER7_CH2_N_AF					GPIO_AF_3
#endif
////////////////////////////////////////////////////////// ch3
#if TIMER7_CH3_P_ENABLE
// PA7(AF3),PB4(AF2),PC6(AF2)
#define TIMER7_CH3_P_PORT_RCU		RCU_GPIOC
#define TIMER7_CH3_P_PORT				GPIOC
#define TIMER7_CH3_P_PIN				GPIO_PIN_6
#define TIMER7_CH3_P_AF					GPIO_AF_3
#endif#if TIMER7_CH3_N_ENABLE
// PA7(AF3),PB4(AF2),PC6(AF2)
#define TIMER7_CH3_N_PORT_RCU		RCU_GPIOA
#define TIMER7_CH3_N_PORT				GPIOA
#define TIMER7_CH3_N_PIN				GPIO_PIN_7
#define TIMER7_CH3_N_AF					GPIO_AF_3
#endif
//////////////////////////////////////////#endif
/*********************************************************/#endif

以上是以高級定時器TIMER7和通用定時器TIMER2為例封裝配置,可參考此流程封裝配置GD32F4其余剩下的12個定時器。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/92867.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/92867.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/92867.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【日志】unity俄羅斯方塊——邊界限制檢測

Bug修復記錄 項目場景 嘗試使用Unity獨自制作俄羅斯方塊&#xff08;也許很沒有必要&#xff0c;網上隨便一搜就有教程&#xff09; 問題描述 俄羅斯方塊的邊緣檢測出錯了&#xff0c;對方塊進行旋轉后&#xff0c;無法到達最左側或者最下側的位置&#xff0c;以及其他問題。演…

C++ string:準 STL Container

歷史STL 最初是一套獨立的泛型庫&#xff08;Alexander Stepanov 等人貢獻&#xff09;&#xff0c;后來被吸納進 C 標準庫&#xff1b;std::basic_string 則是早期 C 標準&#xff08;Cfront / ARM 時代&#xff09;就存在的“字符串類”&#xff0c;并非 STL 原生物。std::st…

Golang學習筆記--語言入門【Go-暑假學習筆記】

目錄 基礎語法部分相關概念 基礎語法部分概念詳解 可見性 導包 內部包 運算符 轉義字符 函數 風格 函數花括號換行 代碼縮進 代碼間隔 花括號省略 三元表達式 數據類型部分相關概念 數據類型部分概念詳解 布爾類型 整型 浮點型 復數類型 字符類型 派生類型…

linux中kill 命令使用詳解

在Linux系統里&#xff0c;kill命令的主要功能是向進程發送信號&#xff0c;以此來控制進程的運行狀態。下面為你詳細介紹它的使用方法&#xff1a; 基礎語法 kill [選項] [進程ID]進程ID也就是PID&#xff0c;可通過ps、pgrep或者top等命令來獲取。 常用信號及其含義 信號可以…

Nginx 安裝與 HTTPS 配置指南:使用 OpenSSL 搭建安全 Web 服務器

Nginx 安裝與 HTTPS 配置指南:使用 OpenSSL 搭建安全 Web 服務器 一、Nginx安裝 1. 安裝依賴項 sudo yum groupinstall "Development Tools" -y # 非必須 sudo yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel -y2.下載Nginx wget http://n…

寫個 flask todo app,簡潔,實用

- 此項目雖然看起來簡單&#xff0c;實際上&#xff0c;修改成自己喜歡的樣子&#xff0c;也是費時間的。 - 別人都搞AI 相關的項目&#xff0c;而我還是搞這種基礎的東西。不要灰心。 - 積累。不論項目大小&#xff0c;不論難易&#xff0c;只看是否有用。項目地址&#xff1a…

4麥 360度定位

要在 ESP32 上用 4 個麥克風實現 360 聲源定位&#xff0c;通常思路是通過 時延估計&#xff08;TDOA&#xff09; 幾何計算&#xff0c;核心流程&#xff1a;陣列布置將 4 個麥克風等間距布置成正方形&#xff08;或圓形&#xff09;。記陣列中心為原點&#xff0c;麥克風編號…

使用yolov10模型檢測視頻中出現的行人,并保存為圖片

一、使用yolov10模型檢測視頻中出現的行人&#xff0c;并保存為圖片&#xff0c;detect_person.py代碼如下&#xff1a;from ultralytics import YOLOv10 import glob import os import cv2 import argparsedef detect_person(videoPath, savePath):if not os.path.exists(save…

現在希望用git將本地文件crawler目錄下的文件更新到遠程倉庫指定crawler目錄下,命名相同的文件本地文件將其覆蓋

git checkout main git pull origin main $source “D:\黑馬大數據學習\crawler” $dest Join-Path (Get-Location) “crawler” if (-not (Test-Path $dest)) { New-Item -ItemType Directory -Path $dest | Out-Null } Copy-Item -Path $source* -Destination $dest -Recur…

網絡調制技術對比表

&#x1f4ca; 網絡調制技術全維度對比表?調制技術??簡稱??頻譜效率??抗噪性??功率效率??復雜度??關鍵特性??典型應用場景??幅度鍵控?ASK低差高低/低電路簡單&#xff0c;易受干擾遙控器、光通信(OOK)?頻移鍵控?FSK低-中中中中/中抗噪較好&#xff0c;頻譜…

優化 Elasticsearch JVM 參數配置指南

一、概述 Elasticsearch 是基于 JVM 的搜索和分析引擎。JVM 參數的合理配置直接影響著 Elasticsearch 的性能和穩定性。盡管 Elasticsearch 已經提供了默認的 JVM 設置&#xff0c;但在某些特定場景下&#xff0c;我們可能需要進行適當的調整和優化。 本文將詳細講述如何安全、…

Python, Go 開發如何進入心流狀態APP

要開發一款基于Python和Go語言、幫助用戶進入“心流”狀態&#xff08;高度專注、高效愉悅的心理狀態&#xff09;的應用&#xff0c;需結合兩種語言的技術優勢&#xff08;Go的高并發與性能、Python的靈活性與AI生態&#xff09;及心流觸發機制&#xff08;清晰目標、即時反饋…

一文詳解手機WiFi模塊與連接

目錄 1 硬件模塊 1.1 Wifi射頻模 1.2 電源管理模塊 2 軟件與協議棧 2.1 系統服務層 2.2 認證與協議處理 3 連接流程 3.1 開啟WiFi與掃描 3.2 選擇網絡與認證 3.3 連接與IP分配 4 特殊連接方式 4.1 WPS快速連接 4.2 熱點模式&#xff08;AP模式&#xff09; 4.3 U…

Java 網絡編程詳解:從基礎到實戰,徹底掌握 TCP/UDP、Socket、HTTP 網絡通信

作為一名 Java 開發工程師&#xff0c;你一定在實際開發中遇到過需要與遠程服務器通信、實現客戶端/服務端架構、處理 HTTP 請求、構建分布式系統等場景。這時&#xff0c;Java 網絡編程&#xff08;Java Networking&#xff09; 就成為你必須掌握的核心技能之一。Java 提供了豐…

Java面試題(中等)

1. 計算機網絡傳輸層有哪些協議&#xff1f;分別適用于什么場景&#xff1f;TCP協議(傳輸控制協議)?&#xff1a;面向連接、可靠傳輸&#xff0c;流量控制、擁塞控制。適用于要求數據完整性的場景&#xff0c;如文件傳輸、網頁瀏覽、電子郵件等。UDP協議 (用戶數據報協議)?&a…

Apache 消息隊列分布式架構與原理

消息隊列 基本概念 定義 消息隊列&#xff08;Message Queue, MQ&#xff09;是一種分布式中間件&#xff0c;通過異步通信、消息暫存和解耦生產消費雙方的機制&#xff0c;提供消息的順序性保證、可靠投遞和流量控制能力&#xff0c;廣泛應用于微服務解耦、大數據流處理等場景…

ModernBERT如何突破BERT局限?情感分析全流程解析

自2018年推出以來&#xff0c;BERT 徹底改變了自然語言處理領域。它在情感分析、問答、語言推理等任務中表現優異。借助雙向訓練和基于Transformer的自注意力機制&#xff0c;BERT 開創了理解文本中單詞關系的新范式。然而&#xff0c;盡管成績斐然&#xff0c;BERT 仍存在局限…

股票Level2逐筆成交及十檔訂單簿分鐘級Tick歷史行情數據詳細解析

本地股票數據處理與分析實戰指南 在量化投資與金融數據分析領域&#xff0c;高效處理本地存儲的股票數據是核心能力之一。本文將從數據類型定義、解析流程及實際應用角度&#xff0c;系統介紹如何基于CSV文件管理股票分鐘數據、高頻Tick數據、逐筆數據、Level2歷史行情等多樣化…

面向互聯網2C業務的分布式類Manus Java框架

本文介紹了阿里巴巴推出的分布式類ManusAgent框架——ali-langengine-dflow&#xff0c;旨在解決現有Agent架構在互聯網2C業務場景中的局限性。文章從背景出發&#xff0c;分析了當前主流Agent架構&#xff08;如Manus、字節TARS、AutoGLM&#xff09;存在的問題&#xff0c;如…

Java-82 深入淺出 MySQL 內部架構:服務層、存儲引擎與文件系統全覆蓋

點一下關注吧&#xff01;&#xff01;&#xff01;非常感謝&#xff01;&#xff01;持續更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持續更新中&#xff01;&#xff08;長期更新&#xff09; AI煉丹日志-30-新發布【1T 萬億】參數量大模型&#xff01;Kim…