STM32F4基本定时器深度解析:从原理到实战应用

Linux环境安装及tomcat/jdk/MySQL安装 Linux环境安装及tomcat/jdk/MySQL安装 安装Linux系统 1.安装Oracle VM VitualBox,准备好linu光盘镜像(这边选的是CentOS-7-x86_64-DVD-1908.iso的光盘) 2.点击新建 3.设置名称内存分配4G以上,系统选择Linux Red Hat -64位 4.文件夹位置选择固态,分配30G以上 5.进入设置 常规 在高级里将共享粘贴板和拖放更改为双向 系统 主板启动顺序设置为光驱硬盘和网络,不要软驱 存储 分配光驱加载linux镜 阅读详情

1. 项目概述:为什么需要关注基本定时器?

在嵌入式开发,尤其是基于STM32这类ARM Cortex-M内核单片机的项目中,定时器(Timer)是除了GPIO之外最基础、最核心的外设之一。很多刚接触STM32F4的朋友,可能会被其丰富的外设列表所震撼,从高级定时器、通用定时器到基本定时器,还有看门狗、SysTick,感觉眼花缭乱。但如果你问我,哪个外设是理解整个定时器体系的基石,我一定会说是“基本定时器”。

基本定时器,顾名思义,功能最为纯粹和基础。它不像高级定时器那样能输出带死区互补的PWM波去驱动电机,也不像通用定时器那样可以轻松实现输入捕获测量脉冲宽度。它的核心任务就一个: 产生一个精准的、周期性的时间基准 。这个基准,是整个系统“心跳”的重要组成部分。你可能用它来周期性地触发ADC采样,实现一个简易的数据采集系统;或者用它来提供一个时基,让操作系统(如FreeRTOS)的任务调度器得以运行;甚至,你可以用它来做一个精准的毫秒级延时函数,彻底告别那些不准确的 for 循环延时。

STM32F4xx系列通常包含两个基本定时器:TIM6和TIM7。它们结构简单,易于配置,是理解STM32定时器工作原理的绝佳入口。今天,我们就来彻底拆解STM32F4的基本定时器,从寄存器到HAL库,从原理到避坑,让你不仅能“会用”,更能“懂它”。

2. 核心原理与结构拆解

2.1 基本定时器的“五脏六腑”

要驾驭一个外设,首先要看懂它的框图。基本定时器的结构可以说是STM32所有定时器中最简洁的,主要包含以下几个核心部分:

  1. 时钟源 :这是定时器的“动力”。基本定时器的时钟通常来自APB1总线。这里有个关键点:当APB1的预分频器系数不为1时(例如,系统时钟168MHz,APB1通常被配置为42MHz或84MHz),连接到定时器的时钟会被倍频。在STM32F4中,这个倍频系数是2。所以,如果你的APB1时钟是42MHz,那么TIM6/TIM7的实际工作时钟就是84MHz。这个细节直接影响你计算定时周期的精度,务必在初始化前通过 RCC_GetPCLK1Freq() 函数确认。

  2. 预分频器 :这是一个16位的可编程分频器,作用是对输入时钟进行“降速”。比如,84MHz的时钟直接计数太快了,我们可以通过预分频器将其分频。计算公式是: 定时器时钟 = 输入时钟 / (PSC + 1) 。这里的 PSC 就是你写入预分频寄存器的值。它可以将高速的系统时钟降低到一个合适的频率,为后面的计数做准备。

  3. 计数器 :这是定时器的核心,一个16位的向上计数器。它会根据预分频器输出的时钟频率,每个时钟周期加1。当计数器的值与你设定的“自动重装载值”相等时,就会产生一个更新事件,并且计数器清零,重新开始计数。

  4. 自动重装载寄存器 :这是一个16位的寄存器,决定了定时器的计数周期。计数器从0开始向上计数,当计数值等于ARR时,产生溢出,触发更新事件。所以,定时器的溢出时间(也就是定时周期)由这两个参数共同决定。

  5. 更新事件与中断 :当计数器溢出时,会产生一个“更新事件”。如果使能了更新中断,这个事件会触发定时器中断,程序可以跳转到中断服务函数中执行特定的任务(比如翻转一个LED灯,或者设置一个标志位)。

整个工作流程就像一个有固定容量和滴水速度的沙漏:预分频器决定了沙漏颈部的大小(滴水速度),自动重装载值决定了沙漏上半部分的容量(沙子总量)。沙子漏完(计数器溢出)的那一刻,就是一次更新事件,然后沙漏被瞬间翻转(计数器清零),开始下一轮计时。

2.2 定时周期计算:一切精度的源头

这是配置定时器最关键的一步,公式必须牢记:

定时周期 T = (ARR + 1) * (PSC + 1) / Tclk

  • T : 你想要实现的定时周期,单位秒。
  • ARR : 自动重装载寄存器的值。
  • PSC : 预分频器的值。
  • Tclk : 定时器的实际输入时钟频率,单位Hz。

举个例子,假设我们需要用TIM6实现一个1ms(0.001秒)的定时中断。

  • 已知系统时钟配置为168MHz,APB1预分频器为4分频,所以APB1时钟为42MHz。由于分频系数不为1,定时器时钟倍频,因此 Tclk = 42MHz * 2 = 84MHz 。
  • 代入公式: 0.001 = (ARR + 1) * (PSC + 1) / 84,000,000
  • 我们需要选择两个整数 ARR 和 PSC 来满足等式。一个常见的组合是:令 PSC = 8399 , ARR = 9 。
    • 计算验证: (8399+1) * (9+1) / 84,000,000 = 8400 * 10 / 84,000,000 = 84,000 / 84,000,000 = 0.001秒 。
  • 这意味着,计数器每收到8400个时钟脉冲(因为PSC+1=8400)才加1,而计数器从0加到9(共10次)就会溢出,总共经历了 8400 * 10 = 84000 个时钟周期。在84MHz的时钟下,这正好是1毫秒。

注意 :ARR和PSC都是16位寄存器,最大值65535。在计算时,要确保 (ARR+1)*(PSC+1) 的值在84MHz时钟下能满足你的定时需求。对于很长的定时(比如1秒),可能需要较大的PSC值,这会导致定时精度降低(因为分频系数大,最小计时单位变大了)。有时为了高精度,可以牺牲ARR的范围,使用更小的PSC,然后通过软件在中断里累加计数来实现长定时。

3. 从零开始的HAL库驱动实战

理论懂了,我们上手操作。这里以STM32CubeIDE环境和HAL库为例,展示如何配置TIM6实现一个1ms的定时中断,并控制一个LED灯以500ms的间隔闪烁。

3.1 硬件与工程准备

假设你手头有一块STM32F407 Discovery板,或者任何一款F4系列核心板。我们使用PC13引脚连接了一个LED(低电平点亮)。

  1. 在STM32CubeIDE中新建一个工程,选择你的具体型号(如STM32F407ZGTx)。
  2. 在 Pinout & Configuration 视图的 System Core -> RCC 中,将高速外部时钟 HSE 设置为 Crystal/Ceramic Resonator 。
  3. 进入 Clock Configuration 标签页,将系统时钟源选为HSE,并配置PLL,使系统时钟 SYSCLK 达到168MHz。你会看到APB1定时器时钟自动计算为84MHz(因为APB1预分频为4,定时器时钟2倍频)。

3.2 定时器配置详解

在左侧目录找到 Timers -> TIM6 。

  1. Clock Source :保持为 Internal Clock 。基本定时器只有内部时钟源。
  2. Parameter Settings :这是核心配置页。
    • Prescaler (PSC - 16 bits value) :填入我们计算好的值 8399 。这个值会写入TIMx_PSC寄存器。
    • Counter Mode :基本定时器只有 Up 向上计数模式。
    • Counter Period (AutoReload Register - 16 bits value) :填入 9 。这个值会写入TIMx_ARR寄存器。
    • auto-reload preload :建议使能(Enable)。这个功能意味着对ARR的修改会在下一次更新事件时才生效,而不是立即生效,可以防止在修改ARR的瞬间产生错误的定时周期。对于固定周期的应用,使能它更安全。
  3. NVIC Settings :勾选 TIM6 global interrupt 使能定时器中断。这是让定时器溢出时能通知CPU的关键一步。

配置完成后,点击 GENERATE CODE 生成工程代码。

3.3 代码编写与中断处理

CubeMX生成的代码搭建了框架,我们还需要添加业务逻辑。

首先,在 main.c 的 /* USER CODE BEGIN 2 */ 部分,启动定时器:

/* USER CODE BEGIN 2 */
HAL_TIM_Base_Start_IT(&htim6); // 以中断模式启动定时器6
/* USER CODE END 2 */

然后,我们需要编写中断服务函数。HAL库已经为我们提供了弱定义的中断回调函数,我们只需要重写它。在 main.c 文件末尾的 /* USER CODE BEGIN 4 */ 部分添加:

/* USER CODE BEGIN 4 */
// 定义一个全局变量用于计数
volatile uint32_t tim6_overflow_count = 0;

// TIM6全局中断回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    // 判断是否是TIM6触发的中断
    if (htim->Instance == TIM6)
    {
        tim6_overflow_count++; // 中断次数加1

        // 每500次中断(即500ms)翻转一次LED
        if (tim6_overflow_count >= 500)
        {
            HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); // 翻转PC13引脚
            tim6_overflow_count = 0; // 计数清零
        }
    }
}
/* USER CODE END 4 */

最后,别忘了在 main 函数的 while(1) 循环中,不要做阻塞性的延时,让中断能正常响应。循环里可以空着,或者处理其他非实时任务。

编译、下载到板子,你应该能看到LED以1秒的周期(500ms亮,500ms灭)稳定闪烁。示波器测量PC13引脚,会得到非常精准的500ms方波。

4. 进阶应用与性能优化

4.1 实现高精度微秒级延时

标准HAL库提供的 HAL_Delay() 函数依赖于SysTick,虽然方便,但有时我们不想占用SysTick,或者需要更灵活的延时。利用基本定时器,我们可以自己封装一个微秒级延时函数。

思路是:将定时器配置为1us溢出一次,在延时函数中启动定时器并清空计数,然后等待计数器达到指定的微秒数。

首先,重新配置TIM6。为了得到1us的周期,在84MHz时钟下:

  • 公式: 1us = 0.000001s = (ARR+1)*(PSC+1)/84,000,000
  • 令 PSC = 0 (不分频),则 ARR+1 = 84 ,所以 ARR = 83 。

在CubeMX中将TIM6的PSC改为0,ARR改为83。 注意,这次我们不使能中断 ,因为我们要用查询方式。

然后,编写延时函数:

// 微秒级延时函数(基于TIM6)
void delay_us(uint16_t us)
{
    __HAL_TIM_SET_COUNTER(&htim6, 0); // 计数器清零
    HAL_TIM_Base_Start(&htim6);       // 启动定时器(非中断模式)

    // 等待计数器值达到目标微秒数
    while (__HAL_TIM_GET_COUNTER(&htim6) < us);

    HAL_TIM_Base_Stop(&htim6);        // 停止定时器
}

这个函数的精度非常高,误差主要来源于函数调用和循环判断的几条指令时间(通常在几十纳秒到几百纳秒级别),对于大多数需要精确时序的外设初始化(如SPI、I2C的时序等待)来说已经足够。

实操心得 :使用这种忙等待的延时函数会阻塞CPU。因此,它只适合在初始化阶段或对实时性要求不高的短延时时使用。在复杂的主循环中,应尽量避免使用,以免影响其他任务的响应。

4.2 作为DMA触发源,实现“后台”数据搬运

这是基本定时器一个非常强大的高级用法。想象一个场景:你需要以固定的采样率(比如10kHz)采集ADC的数据,并且不能因为CPU处理其他任务而丢失数据。传统的“定时中断+读取ADC”方式,在中断服务函数里进行数据处理或存储,如果处理时间过长,可能会影响下一次采样,或者丢失中断。

更优雅的方案是: 让TIM6的更新事件作为DMA的触发源,自动将ADC转换完成的数据搬运到内存中的一个数组里 。整个过程无需CPU干预,实现了“后台”自动采集。当数组填满一半或全部时,再产生一个DMA中断通知CPU来处理这批数据。

配置步骤概要:

  1. 配置ADC为规则组扫描、连续转换模式。
  2. 配置DMA,方向为外设到内存,外设地址是ADC的数据寄存器,内存地址是你的数组。将DMA的触发源选择为 TIM6_TRGO 。
  3. 配置TIM6,产生更新事件(UG)作为触发输出(TRGO)。计算好TIM6的周期,使其等于你想要的采样间隔。
  4. 启动ADC的DMA传输,然后启动TIM6。
  5. 之后,TIM6每次溢出,都会触发一次DMA请求,DMA控制器自动把ADC转换结果搬到数组的下一个位置。

这种方式将CPU从繁重的、周期性的数据搬运工作中解放出来,极大地提高了系统效率和实时性,是构建高效数据采集系统的关键技巧。

5. 常见问题排查与调试心得

即使理解了原理,实际调试中还是会遇到各种问题。下面是我总结的几个典型“坑点”和解决方法。

5.1 定时器不工作,没有进入中断

这是最常见的问题。请按照以下清单逐一排查:

现象 可能原因 排查方法
LED完全不闪烁,程序像卡死 定时器时钟未使能 检查 main.c 中 MX_TIM6_Init() 函数是否被调用,以及其中是否有 __HAL_RCC_TIM6_CLK_ENABLE() 。
程序运行,但LED不闪烁 中断未使能 1. 在CubeMX中确认NVIC里TIM6中断已勾选。
2. 在代码中确认使用了 HAL_TIM_Base_Start_IT() 启动。
3. 检查是否在别的地方错误地关闭了全局中断。
中断似乎进了,但逻辑不对 中断服务函数写错或回调函数未重写 1. 确保重写的是 HAL_TIM_PeriodElapsedCallback ,而不是其他函数。
2. 在回调函数开头加一个断点或翻转一个测试IO,确认中断是否真的被触发。
定时周期严重不准 时钟源频率计算错误 1. 使用 RCC_GetPCLK1Freq() 函数打印或查看APB1时钟频率。
2. 回忆并应用“APB1预分频不为1时,定时器时钟2倍频”的规则,重新计算PSC和ARR。
只有第一次中断正常 自动重装载预装载未使能 在CubeMX配置或代码初始化中,确保将 TIM6->CR1 寄存器的 ARPE 位置1(HAL库中通过 htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE 实现)。

5.2 如何测量定时器中断的实际执行时间?

有时我们需要评估中断服务函数的执行时间,以确保它不会占用过多CPU,或者不会影响其他更高优先级的中断。

方法一:使用IO口和示波器 在中断服务函数的开头和结尾,分别执行一次GPIO置高和置低操作。

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if (htim->Instance == TIM6)
    {
        HAL_GPIO_WritePin(TEST_GPIO_Port, TEST_Pin, GPIO_PIN_SET); // 开始
        // ... 你的中断处理代码 ...
        HAL_GPIO_WritePin(TEST_GPIO_Port, TEST_Pin, GPIO_PIN_RESET); // 结束
    }
}

用示波器探头测量这个测试引脚,脉冲的宽度就是中断服务函数的执行时间。这是最直观、最准确的方法。

方法二:使用内核的DWT周期计数器 对于Cortex-M3/M4/M7内核,有一个调试用的DWT(Data Watchpoint and Trace)单元,其中的 CYCCNT 寄存器会在每个内核时钟周期自增。我们可以在中断入口和出口读取这个计数器,差值就是消耗的时钟周期数,再除以系统时钟频率就得到时间。

// 启用DWT周期计数器
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
DWT->CYCCNT = 0;
DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk;

volatile uint32_t start_cycles, end_cycles;
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if (htim->Instance == TIM6)
    {
        start_cycles = DWT->CYCCNT;
        // ... 你的中断处理代码 ...
        end_cycles = DWT->CYCCNT;
        uint32_t elapsed_cycles = end_cycles - start_cycles;
        // elapsed_time = elapsed_cycles / SystemCoreClock;
    }
}

这种方法无需额外硬件,但要注意 CYCCNT 是32位的,在168MHz下大约每25.5秒会溢出一次,对于测量短时间任务没问题。

5.3 多个定时器中断的优先级管理

当一个系统中有多个定时器(比如TIM6做时基,TIM2驱动PWM)都需要中断时,优先级设置就很重要。在CubeMX的NVIC配置中,可以设置每个中断的“抢占优先级”和“子优先级”。

  • 抢占优先级 :高抢占优先级的中断可以打断正在执行的低抢占优先级中断。
  • 子优先级 :当两个中断同时发生且抢占优先级相同时,子优先级高的先执行,但不能互相打断。

对于实时性要求最高的任务(如电机控制的PWM更新中断),应分配最高的抢占优先级(数字越小优先级越高)。对于像TIM6这种提供基础时基的中断,可以分配较低的抢占优先级,但要注意它的中断服务函数必须非常短小精悍,否则它可能阻塞其他重要中断。

一个常见的错误是,把所有中断的优先级都设为默认值。当系统复杂后,可能导致低优先级的中断久久得不到响应,或者高优先级中断频繁打断低优先级任务,导致系统实时性变差。合理的优先级规划是嵌入式系统稳定运行的基础。

我个人在项目中的习惯是,将SysTick中断(如果用于RTOS内核)设置为最低的抢占优先级,将硬件故障(HardFault)等异常设置为最高。然后根据外设任务的紧急程度,依次分配定时器、通信接口(如UART接收完成)、DMA传输完成等中断的优先级。对于基本定时器TIM6,如果只是提供时基标志,我通常会将其设置为一个较低的优先级。

整理笔记——二极管 二极管是一种由半导体材料制成的一种具有单向导电性能的电子元器件,二极管的核心是PN结。加在二极管两端的电压和通关的电流被成为,二极管的伏安特性曲线​​​二极管的正向特性:起初正向电压较小时,正向电流几乎没有,称之为死区,此时二极管处于截止状态。当电压差超过截止电压(0.5V或者0.7V),电流随着电压上升,开始增加缓慢,随后急剧增大,二极管的电阻变小进入导通状态,此时电压变化较小。二极管的反向特性:起初反向电流很小,不随电压二变化,此时成为反向饱和电流;当方向电压达到二极管的反向击穿电压。 阅读详情

相关推荐

宇树GO2-YOLOv5在Jetson Orin上的部署避坑实践

本文详细记录了在宇树GO2四足机器人搭载的Jetson Orin平台上部署YOLOv5目标检测模型的完整实践过程。文章重点分享了从ARM架构认知、网络连接解决方案、Archiconda环境搭建、PyTorch版本精准匹配到依赖安装与性能验证的核心步骤与避坑指南,旨在帮助开发者高效完成边缘计算环境下的算法部署。

app77的博客 664

Linux安装jdk,mysql,Tomcat,nginx 一篇就够了

1.Linux安装jdk 1.1检测是否有jdk java -version 因为某些Centos系统会自带jdk (OpenJdk) 卸载OpenJdk yum remove *openjdk* 1.2下载Linux1.8jdk 下载地址:Java Downloads | Oracle 1.3.安装jdk 将jdk压缩文件丢到/usr/local下,解压文件 tar -zxvf xxxxxx 1.4配置环境变量 解压完成之后进行环境变量配置,L...

weixin_58670730的博客 1万+

【gateway nc adapter虚拟网卡 win11 联想】问题的解决

由于需要登录公司内网,于是启用奇安信VPN。但启动后报出网关未连接的问题,于是我检查了我的网络适配器,并尝试解决,以下给出几种我实践过程中的行动,并附带最后成功的解决方法。

m0_73602417的博客 6493

Linux关于JDK、Tomcat以及MySQL安装

将tomcat目录下bin中的catalina.sh拷贝到/etc/init.d下,重命名为tomcat,为所有用户增加可执行权限。在输入此命令时,可能会出现未找到命令,这时需要输入 yum -y install vim -enhanced。设置密码校验长度,要不密码太短不让你过(多次测试发现密码最小长度为4位)设置密码校验策略(0 or LOW),要不密码太LOW不让你过。export TOMCAT_HOME=Tomcat解压路径。数据库没有授权,允许以root身份远程登录mysql。

qq_65345936的博客 1100

10位PWM能否满足电梯±5mm平层精度?4位扩展法让10位PWM达到14位精度

电梯平层精度直接关系乘坐舒适性与安全性,而PWM分辨率是决定精度的关键因素之一。10位PWM能否满足±5mm的平层精度要求?本文从分辨率与物理量的对应关系出发,结合工程精度需求与实战对比,给出明确的选型结论与解决方案,请参考CSDN博客《4位扩展法:基于ATtiny816的高精度PWM软件扩展方法》和《低成本高精度PWM:4位扩展法原理、实现和工程实践》。10位PWM的分辨率为 $2^{10} = 1024$ 级。

m0_73354873的博客 239

AD9361 官方例程

文章目录一、官方资料1.1 介绍1.2 下载 和 使用1.3 相关资料二、步骤2.1 在Vivado中构建HDL2.2 在SDK中构建No- OS总结 一、官方资料 1.1 介绍 HDL参考设计介绍:AD9361 HDL Reference Designs 无操作系统介绍:AD9361 No-OS Software 1.2 下载 和 使用 HDL下载:Download HDL 在Vivado中构建HDL:Building HDL No-OS下载:Download No-OS 1.3 相关资料 AD

weixin_44630490的博客 3万+

Linux上安装JDK、Tomcat、MySQL

Linux上安装JDK 1,下载jdk http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2,使用XFTP工具导入linux 3,解压到/root/software目录 mkdir /root/software #在root下面创建software目录 tar -zxvf ...

张子又 766

Claude Code + 自定义模型体验

AI 编程工具的发展突飞猛进:Cursor 横空出世,推出了“Agent 模式”;新竞争者如 Windsurf 也纷纷加入战局。几乎所有产品都开始转向“代理式(agentic)”开发模式——不再依赖单次 LLM 响应进行补全,而是让大模型在一个循环中调用各种工具,来完成更复杂的任务:分析代码库上下文、读取网页与文档、编译程序、运行测试、修复失败构建或测试、不断迭代等。

西京刀客 5765

在linux下安装JDK,Tomcat以及Mysql

一、JDK安装 JDK(Java Development Kit),从字面意思翻译过来就是java开发的工具。可以这样理解Jdk就是java,我们要写Java首先得要有java这个东西对吧?所以我们要做的第一步就是从官网下载jdk安装到自己的电脑。 1、使用yum 安装jdk1.8命令 yum install -y java-1.8.0-openjdk-devel.x86_64 2、使用java -version测试 查看是否安装成功 这里再补充下知识 JRE 和 JDK 的区别.

qq_35254085的博客 329

渗透测试之哥斯拉实战

可以直接在这里使用meterpreter命令进行对服务端的控制。选择目标 - 添加,配置连接信息,之后测试连接成功!php的shell功能如图。先要进行数据库的配置信息。可以直接在这里打包全站。

大河之犬的博客 2478

车载软件架构 —— AUTOSAR Vector SIP包(三)

### 上一篇文章中介绍了AUTOSAR基础软件供应商Vector公司的开发工具链,本文将继续介绍Vector公司的AUTOSAR产品。 ### -> 1、Vector SIP包中的StartApplication ### -> 2、StartApplication如何开始使用

Soly_kun的博客 825

Linux之jdk、mysql、Tomcat安装

一、jdk安装 1、安装步骤: 1、首先打开MobaXterm,点击session,点击ssh,新建一个用户 2、新建一个用户之后,新建一个文件夹名叫tools,将jdk的压缩包给复制进去 3、进来之后先将用户切换成root,切换命名为su root,之后输入密码 4、之后就输入解压命名,注意压缩包的后缀名,如果是后缀名为.tar.gz,就输入命名tar zvxf jdk文件名。如果后缀名为.zip,就输入unzip。 5、解压之后输入java -version,查看jdk...

m0_53151031的博客 482

halcon第一讲:基本操作

本文通过Blob分析提取出图片中的硬币,来熟悉halcon的基本操作。 1、读取图像,halcon读取图像有三种方式:1)、文件-&gt;读取图像;2)、通过助手;3)、代码 *打开窗口 dev_open_window (0, 0, 512, 512, 'black', WindowHandle) *读取图像 read_image (Image,'1.png') 读取的图像如下: 2...

qq_24946843的博客 3万+

Linux 安装MySQL、JDK以及Tomcat的小白教程

当安装一个服务软件时,默认是把服务启动文件放在 /etc/init.d/里面,新版mysql在该目录中没有启动文件 systemctl start mysqld.service 启动mysql systemctl restart mysqld.service 重启mysql systemctl status mysqld.service 查看msyql状态 systemctl stop mysqld.service 停止mysql。在linux中mysql的配置文件在/etc/my.cnf 中。

A121212789的博客 1929

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Linux安装jdk,mysql,apache,tomcat,Jenkins

linux环境部署_免费高速下载|百度网盘-分享无限制 (baidu.com)​​​​​​jhttps://pan.baidu.com/s/1XQhyEccGgO0QfC7KEXLTEg#list/path=%2F 密钥:aass jdk,Jenkins,mysql,apache,linux连接工具 一、远程连接工具的使用 1. 为什么使用远程连接工具 (1)实际应用中服务器一般放在远端(机房)或者云服务上,测试人员不可能直接到现场操作 Linux服务器 (2)无法现场操作,所以系统通过远程工具进

weixin_51575027的博客 2028

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Linux安装jdk MySQL Tomcat

二进制安装。---只需要解压就可以。只针对特殊平台。比如jdktomcatRPM按照一定的规范就可以按照该软件。无法安装依赖的文件。yum远程安装基于RPM帮你把依赖的文件安装上去。多安装源码安装。编译--->打包---->安装。......

ne_123456的博客 1319

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Linux安装JDK、Tomcat、MySql

先去官网下载Java 归档下载 - Java SE 8u211 及更高版本 |甲骨文中国 (oracle.com)这里我下载的是8u161,下载好后,可以直接使用finallshell拖过去。我们统一安装在 /usr/soft目录下然后解压该软件然后可以重命名解压后的目录,这样看到更简洁配置环境变量然后刷新配置使其生效 输入java -version查看配置成功没有2、Tomcat的安装下载linux版本的tomcat把tomcat软件放到linux中解压。

2301_78418531的博客 368

Linux安装JDK、Tomcat、MYSQL

接上篇 xshell与xftp的安装使用. 如果没购买服务器的先购买服务器.购买服务器. 目录JDKTomcat12345678MYSQL12345678 JDK 首先双击打开xshell并且连接到服务器 输入 yum list java* 会出现大堆与jdk相关的信息 我们安装java-1.8.0-openjdk。 使用指令yum -y install java-1.8.0-openjdk* 因为我的是已经安装过的所以不会再安装 安装好后出现Complete! 说明已经安装好了 你还可以输入java.

XSAAA的博客 391

在Linux中安装jdk,tomcat,MySQL

在Linux中安装jdk,tomcat,MySQL 安装jdk 方法一:yum一键安装 简单粗暴的下载 yum -y list java* 选择自己需要的版本 yum install -y java-1.8.0-openjdk-devel.x86_64 方法二:手动安装 在Oracle官网上去下载需要安装的jdk版本,比如我下载的jdk-8u131-linux-x64.tar.gz这个版本 如果安装了图形化界面可以直接在Linux中下载,只有黑窗口的话可以在主机上下载然后使用第三方工具拖到虚拟机

zzzjhk的博客 127

在Linux系统上安装JDK、MySQL和Tomcat

很多初次接触Linux系统的人不太清楚JDK、MySQL和Tomcat的安装,在这里我做一个简要的步骤,希望可以帮到你们。 安装之前你要确保你已经安装过远程连接工具,远程连接工具是为了将JDK、MySQL和Tomcat上传到Linux系统。这里将这三个压缩包上传到Linux系统,后面安装要用到。 我用的软件版本: jdk-7u71-linux-i586.tar.gz MySQL-

HENGO 1991

Linux下安装jdk、MySQL、Tomcat

一、 安装JDK 在Linux下安装JDK,并配置JAVA_HOME环境变量…… 1.1 下载JDK的压缩包 去逛网下载压缩包,由于oracle官网更新,需要登录并同意协议才允许下载 https://www.oracle.com/java/technologies/javase-jdk8-downloads.html 1.2 将jdk压缩包拉取到Linux系统中 需要使用图形化界面的Sftp拖拽到Linux操作系统 Xterm的Sftp图 [外链图片转存失败,源站可能有防盗链机制

山高水长 186

Linux之JDK,Tomcat,MySql的安装

Linux之JDK,Tomcat的安装前言安装JDK安装Tomcatmysql的安装 前言 应为我们在虚拟机里面操作的东西都是用命令很麻烦所有先安装一个工具WinSCP WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端。同时支持SCP协议。它的主要功能就是在本地与远程计算机间安全的复制文件。.winscp也可以链接其他系统,比如linux系统。 我们想把东西传输给虚拟机里面就方便多了 WinSCP的操作界面 要装JDk和Tomcat之前我们需要把东西传输到虚拟机里面,这个时候还需

Lzxccas的博客 271

Linux的安装jdk,Tomcat,mysql安装

Linux的安装jdk工具链接打开工具输入密码用户名换源成国内阿里云的源安装jdk上传需要需要安装的包安装Tomcattomcat的自动启动mysql安装 工具链接 链接: link. 打开工具输入密码用户名 SecureCRTPortable工具 换源成国内阿里云的源 1.确保更换之前确保自己安装wget,若是没有wget直接安装即可 yum list wget yum -y install wget 2.首先备份 2.1 找到文件 cd /etc/yum.repos.d 2.2 备份

yoonbongchi的博客 176

在linux下安装jdk、mysql、tomcat环境

linux下安装jdk、mysql、tomcat环境

许文杰的博客 802

知了堂|在linux下安装JDK,Tomcat以及Mysql

一、JDK安装 jdk(Java Development Kit),从字面意思翻译过来就是java开发的工具。可以这样理解Jdk就是java,我们要写Java首先得要有java这个东西对吧?所以我们要做的第一步就是从官网下载jdk安装到自己的电脑。 1、使用yum 安装jdk1.8命令 yum install -y java-1.8.0-openjdk-devel.x86_64 2、使用java -version测试 查看是否安装成功 这里在补充下知识 JRE 和 JDK 的区别是什么 JRE顾名思义是j

qq_35254085的博客 266

Linux之安装jdk,MySQL以及Tomcat

使用工具: MobaXterm---是一款增强型终端、X 服务器和 Unix 命令集(GNU/ Cygwin)工具箱。 可以在这个工具里面书写Linux命令 下载地址: MobaXterm Xserver with SSH, telnet, RDP, VNC and X11 - Home Editionhttps://mobaxterm.mobatek.net/download-home-edition.html 使用方法: 下载安装之后 一、安装jdk 切换用户:su ...

qq_54936371的博客 398
上一篇: 多通道高速数据采集的通道隔离与信号调理实战解析
下一篇: 二分查找算法在分巧克力问题中的应用与优化
weixin_34174322
博客等级 码龄11年 4544粉丝 1182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值