【Linux】初见,基础指令

前言

        本文将讲解Linux中最基础的东西-----指令,带大家了解一下Linux中有哪些基础指令,分别有什么作用。

        本文中的指令和选项并不全,只介绍较为常用的

pwd指令

语法:pwd

功能:显示当前所在位置(路径)

root@hcss-ecs-4ce7:~# pwd
/root

root@hcss-ecs-4ce7:~/path1# pwd
/root/path1

ls指令

语法:ls  选项  文件或目录

功能:对于目录,显示这个目录中所有子目录和文件。对于文件,显示文件名和其他信息。若没有给出指定的文件或目录,则显示当前所在位置的文件或目录。若没有选项则只显示文件名,不显示其他信息。

常用选项

-l 列出详细信息。

root@hcss-ecs-4ce7:~# ls
my.txt  my.zip  new  new.txt  path1  path.tgz  snap  temp.txt

root@hcss-ecs-4ce7:~# ls -l
total 52
-rw-r--r-- 1 root root    21 May 18 14:29 my.txt
-rw-r--r-- 1 root root   183 May 18 14:38 my.zip
drwxr-xr-x 2 root root  4096 May 18 22:12 new
-rw-r--r-- 1 root root    14 May 18 11:35 new.txt
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
-rw-r--r-- 1 root root   274 May 18 22:00 path.tgz
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt

root@hcss-ecs-4ce7:~# ls -l path1
total 8
-rw-r--r-- 1 root root    0 May 14 20:35 myfile.txt
-rw-r--r-- 1 root root   21 May 18 14:29 my.txt
drwxr-xr-x 3 root root 4096 May 14 23:37 path2

补充:

Linux中目录即为windows中的文件夹 。

建立空文件也会占用磁盘空间,因为文件=文件属性+文件内容,即使内容为空,属性也不会为空。

Linux不同于windows不依靠后缀名来区别文件和目录,而是靠文件属性中第一个字母区别

Linux中的路径分割符为:/,而windows中的为:\

cd指令

cd指令是关于Linux目录路径的指令。

不论是那个操作系统中,目录都是以一个多叉树的形式实现的。Linux中的根目录用 " / "表示。文件或空目录一定是叶子节点。

绝对路径:从 / 开始不依靠其他路径定位位置。

相对路径:通过当前所处路径,定位出位置。

绝对路径不会因为用户位置的改变而导致定位位置改变,通常用于特定服务中配置文件的操作,而相对路径由于其使用简洁方便,常用于命令行。

Linux中存在以 " . "开头的文件,我们称作隐藏文件,不论什么目录里面都会有 " . " " .. "这两个隐藏文件

语法:cd  目录名

功能:改变当前目录到指定的目录下。

常用目录名

相对路径

绝对路径

" .. "

" ~ "

" - "

root@hcss-ecs-4ce7:~# pwd #查看当前所处目录
/root
root@hcss-ecs-4ce7:~# cd /root/path1 #绝对路径,进入到指定的目录下
root@hcss-ecs-4ce7:~/path1# pwd
/root/path1

root@hcss-ecs-4ce7:~# pwd
/root
root@hcss-ecs-4ce7:~# cd ./path1 #相对路径,‘.’表示当前目录
root@hcss-ecs-4ce7:~/path1# pwd
/root/path1

root@hcss-ecs-4ce7:~/path1# pwd
/root/path1
root@hcss-ecs-4ce7:~/path1# cd .. #".."表示上层目录,这里表达返回上一层目录
root@hcss-ecs-4ce7:~# pwd
/root

root@hcss-ecs-4ce7:~# pwd
/root
root@hcss-ecs-4ce7:~# cd - #表示进入最近的一次访问的目录
/root/path1
root@hcss-ecs-4ce7:~/path1# pwd
/root/path1

root@hcss-ecs-4ce7:~/path1# pwd
/root/path1
root@hcss-ecs-4ce7:~/path1# cd ~ #表示返回家目录,不写~也可以
root@hcss-ecs-4ce7:~# pwd
/root

补充:

cd ~ 返回家目录。对于root账号而言是返回 /root ,对于普通账号而言是返回 /home/xxx(自己的账号名)

touch指令

语法:touch 选项  文件名

功能:对于一个存在的文件,改变其日期时间。对于不存在的文件,新建这个文件

常用选项:

-a: change only the a ccess time 

-m: change only the modification time

root@hcss-ecs-4ce7:~# ls -l
total 52
-rw-r--r-- 1 root root    21 May 18 14:29 my.txt
-rw-r--r-- 1 root root   183 May 18 14:38 my.zip
drwxr-xr-x 2 root root  4096 May 18 22:12 new
-rw-r--r-- 1 root root    14 May 18 11:35 new.txt
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
-rw-r--r-- 1 root root   274 May 18 22:00 path.tgz
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt
root@hcss-ecs-4ce7:~# touch aaaaa.txt #创建文件
root@hcss-ecs-4ce7:~# ls -l
total 52
-rw-r--r-- 1 root root     0 May 19 16:59 aaaaa.txt
-rw-r--r-- 1 root root    21 May 18 14:29 my.txt
-rw-r--r-- 1 root root   183 May 18 14:38 my.zip
drwxr-xr-x 2 root root  4096 May 18 22:12 new
-rw-r--r-- 1 root root    14 May 18 11:35 new.txt
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
-rw-r--r-- 1 root root   274 May 18 22:00 path.tgz
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt

补充:stat命令,功能:查看文件的详细信息。用过stat我们就可以观察到touch修改时间的操作

root@hcss-ecs-4ce7:~# stat new.txt
  File: new.txt
  Size: 14        	Blocks: 8          IO Block: 4096   regular file
Device: fc01h/64513d	Inode: 151998      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2025-05-18 11:35:22.012539536 +0800
Modify: 2025-05-18 11:35:19.900507212 +0800
Change: 2025-05-18 11:35:19.900507212 +0800
 Birth: 2025-05-15 10:42:29.595967837 +0800

 修改时间:

root@hcss-ecs-4ce7:~# stat new.txt
  File: new.txt
  Size: 14        	Blocks: 8          IO Block: 4096   regular file
Device: fc01h/64513d	Inode: 151998      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2025-05-18 11:35:22.012539536 +0800
Modify: 2025-05-18 11:35:19.900507212 +0800
Change: 2025-05-18 11:35:19.900507212 +0800
 Birth: 2025-05-15 10:42:29.595967837 +0800

//修改access时间
root@hcss-ecs-4ce7:~# touch touch -a new.txt
root@hcss-ecs-4ce7:~# stat new.txt
  File: new.txt
  Size: 14        	Blocks: 8          IO Block: 4096   regular file
Device: fc01h/64513d	Inode: 151998      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2025-05-19 17:07:15.106092725 +0800
Modify: 2025-05-18 11:35:19.900507212 +0800
Change: 2025-05-19 17:07:15.106092725 +0800   //我们发现这个也发生了修改,这里牵扯其他知识,后面再详细介绍
 Birth: 2025-05-15 10:42:29.595967837 +0800

//修改modify时间
root@hcss-ecs-4ce7:~# touch -m new.txt
root@hcss-ecs-4ce7:~# stat new.txt
  File: new.txt
  Size: 14        	Blocks: 8          IO Block: 4096   regular file
Device: fc01h/64513d	Inode: 151998      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2025-05-19 17:07:15.106092725 +0800
Modify: 2025-05-19 17:08:59.171702276 +0800
Change: 2025-05-19 17:08:59.171702276 +0800
 Birth: 2025-05-15 10:42:29.595967837 +0800

mkdir指令

语法:mkdir 选项  目录名或路径

功能:在当前位置下创建目录

常用选项:

-p (指定路径创建目录,当目录中有不存在的目录时,直接创建)

root@hcss-ecs-4ce7:~# mkdir new  #在当前位置下创建一个目录
root@hcss-ecs-4ce7:~# ls -l
total 40
-rw-r--r-- 1 root root    21 May 19 17:00 my.txt
drwxr-xr-x 2 root root  4096 May 19 17:22 new
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt


//指定路径,创建多个目录
root@hcss-ecs-4ce7:~# mkdir -p path/path1/path2/path3
root@hcss-ecs-4ce7:~# ls -l
total 40
-rw-r--r-- 1 root root    21 May 19 17:00 my.txt
drwxr-xr-x 3 root root  4096 May 19 17:24 path
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt
root@hcss-ecs-4ce7:~# tree path  //通过tree指令我们可以看到形象的路径
path
└── path1
    └── path2
        └── path3

3 directories, 0 files

补充:tree指令,可以形象的将一个目录里的内容展示出来。若没有安装可更加系统提示安装。

 rmdir&rm指令

语法:rmdir 选项  目录名或路径

功能:删除空目录

选项

-p (当删除子目录时,如果父目录也变成了空目录,则一并删除)

root@hcss-ecs-4ce7:~# ls -l
total 40
-rw-r--r-- 1 root root    21 May 19 17:00 my.txt
drwxr-xr-x 3 root root  4096 May 19 17:24 path
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt

//当删除子目录时,如果父目录也变成了空目录,则一并删除
root@hcss-ecs-4ce7:~# rmdir -p path/path1/path2/path3
root@hcss-ecs-4ce7:~# ls -l
total 36
-rw-r--r-- 1 root root    21 May 19 17:00 my.txt
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt

rmdir的弊端在于只能删除空目录,当目录中有内容则无法删除,但rm指令可以

语法:rm 选项  目录名或路径

功能:删除目录或文件

选项:-f  即使是只读文件,也直接删除

           -r  删除目录及其包含的所有文件

           -i  删除前逐一询问确认

限制:只针对root账号、或普通账号自己创建的目录或文件

root@hcss-ecs-4ce7:~# ls -l
total 36
-rw-r--r-- 1 root root    21 May 19 17:00 my.txt
-rw-r--r-- 1 root root     0 May 19 17:41 new.txt
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt

//删除普通文件
root@hcss-ecs-4ce7:~# rm new.txt
root@hcss-ecs-4ce7:~# ls -l
total 36
-rw-r--r-- 1 root root    21 May 19 17:00 my.txt
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt


root@hcss-ecs-4ce7:~# touch new1.txt
root@hcss-ecs-4ce7:~# ls -l
total 36
-rw-r--r-- 1 root root    21 May 19 17:00 my.txt
-rw-r--r-- 1 root root     0 May 19 17:42 new1.txt
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt

//删除前询问
root@hcss-ecs-4ce7:~# rm -i new1.txt
rm: remove regular empty file 'new1.txt'? y
root@hcss-ecs-4ce7:~# ls -l
total 36
-rw-r--r-- 1 root root    21 May 19 17:00 my.txt
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt


root@hcss-ecs-4ce7:~# mkdir -p path/path1/path2/path3
root@hcss-ecs-4ce7:~# ls -l
total 40
-rw-r--r-- 1 root root    21 May 19 17:00 my.txt
drwxr-xr-x 3 root root  4096 May 19 17:44 path
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt

//删除目录及其所包含的所有文件
root@hcss-ecs-4ce7:~# rm -r path
root@hcss-ecs-4ce7:~# ls -l
total 36
-rw-r--r-- 1 root root    21 May 19 17:00 my.txt
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt


root@hcss-ecs-4ce7:~# mkdir -p path/path1/path2/path3
root@hcss-ecs-4ce7:~# ls -l
total 40
-rw-r--r-- 1 root root    21 May 19 17:00 my.txt
drwxr-xr-x 3 root root  4096 May 19 17:47 path
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt

//删除前询问确认
root@hcss-ecs-4ce7:~# rm -ir path
rm: descend into directory 'path'? y
rm: descend into directory 'path/path1'? y
rm: descend into directory 'path/path1/path2'? y
rm: remove directory 'path/path1/path2/path3'? y
rm: remove directory 'path/path1/path2'? y
rm: remove directory 'path/path1'? y
rm: remove directory 'path'? y
root@hcss-ecs-4ce7:~# ls -l
total 36
-rw-r--r-- 1 root root    21 May 19 17:00 my.txt
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt

man指令

语法:man 选项  指令

功能:当我们忘记一个指令怎么使用时,可以使用man来查询

选项

通常为1-9

补充:man手册分为9章

        1是普通的命令

        2是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调⽤这个函数,需要加什么 头文件)

        3是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备⽂件

        4略

        5是指⽂件的格式,比如passwd,就会说明这个文件中各个字段的含义

        6是给游戏留的,由各个游戏自己定义

        7是附件还有⼀些变量,比如像environ这种全局变量在这里就有说明

        8是系统管理用的命令,这些命令只能由root使用,如ifconfig

        9略

选项中不给出具体数字,man就会从第一章开始找直到找到。反之如果给出具体数字,man就只会去对应的第几章去找

root@hcss-ecs-4ce7:~# man printf # 查看printf指令(没错,printf也是⼀个指令)
root@hcss-ecs-4ce7:~# man fork # 查看系统调⽤,默认没有这个指令,man就⾃动去2号⼿册查找 
root@hcss-ecs-4ce7:~# man 2 frok # 查看系统调⽤ 
root@hcss-ecs-4ce7:~# man 3 printf # 查看C库函数 
root@hcss-ecs-4ce7:~# man 7 signal # 查看变量 
root@hcss-ecs-4ce7:~# man 7 environ
root@hcss-ecs-4ce7:~# man man # 查看man⼿册⾃⼰

echo指令

语法:echo  选项  内容

功能:打印内容或将内容放入文件中

#将echo后面的内容作为字符串,打印出来
root@hcss-ecs-4ce7:~# echo "你好世界"
你好世界
root@hcss-ecs-4ce7:~# echo test.cpp
test.cpp

#利用 > 进行重定向操作
root@hcss-ecs-4ce7:~# ls
my.txt  path1  snap  temp.txt
root@hcss-ecs-4ce7:~# echo "你好世界">new.txt
root@hcss-ecs-4ce7:~# ls
my.txt  new.txt  path1  snap  temp.txt
root@hcss-ecs-4ce7:~# cat new.txt
你好世界

# >>进行追加重定向
root@hcss-ecs-4ce7:~# echo "明天你好">>new.txt
root@hcss-ecs-4ce7:~# cat new.txt
你好世界
明天你好

# < 输入重定向,与cat new.txt效果上无异
root@hcss-ecs-4ce7:~# cat <new.txt
你好世界
明天你好

补充:重定向有两个特点:1.如果重定向的文件不存在,则创建文件再写入内容。2.如果文件存在则清空文件再写入内容(既覆盖)。

which指令

语法:which  指令名

功能:搜索指令

root@hcss-ecs-4ce7:~# which ls
/usr/bin/ls
root@hcss-ecs-4ce7:~# which man
/usr/bin/man
root@hcss-ecs-4ce7:~# which touch
/usr/bin/touch

 补充:我们通过which指令可以看到,指令其实也是目录,存在在bin目录下

        指令本质==可执行文件==我们写的C/C++程序

cp指令

语法:cp  源文件或目录   目标文件或目录

功能:拷贝文件或目录

选项

           -f  强制拷贝,不论目标文件或目录是否存在

           -r 递归处理,将目录下的文件和子目录一起处理。若源文件或目录的形态,不属于目录或符 号链接,则⼀律视为普通文件处理。

           -i 覆盖文件前线询问

#普通文件的拷贝
root@hcss-ecs-4ce7:~# ls
my.txt  path1  snap  temp.txt
root@hcss-ecs-4ce7:~# echo "你好世界"> new.txt
root@hcss-ecs-4ce7:~# cp new.txt cpnew.txt
root@hcss-ecs-4ce7:~# ls
cpnew.txt  my.txt  new.txt  path1  snap  temp.txt
root@hcss-ecs-4ce7:~# cat cpnew.txt
你好世界


#将多个文件拷贝到目录
root@hcss-ecs-4ce7:~# mkdir new
root@hcss-ecs-4ce7:~# ls
cpnew.txt  my.txt  new  new.txt  path1  snap  temp.txt
root@hcss-ecs-4ce7:~# cp *.txt new  # “*”为通配符,匹配所有以.txt结尾的文件
root@hcss-ecs-4ce7:~# tree new
new
├── cpnew.txt
├── my.txt
├── new.txt
└── temp.txt


#如果目标文件存在则直接覆盖
root@hcss-ecs-4ce7:~# cat cpnew.txt
你好世界
root@hcss-ecs-4ce7:~# echo "明天你好">new.txt
root@hcss-ecs-4ce7:~# cp new.txt cpnew.txt
root@hcss-ecs-4ce7:~# cat cpnew.txt
明天你好


#拷贝前询问
root@hcss-ecs-4ce7:~# cp -i new.txt cpnew.txt
cp: overwrite 'cpnew.txt'? y


#强制拷贝整个目录
root@hcss-ecs-4ce7:~# ls
cpnew.txt  my.txt  new  new.txt  path1  snap  temp.txt
root@hcss-ecs-4ce7:~# tree new
new
├── cpnew.txt
├── my.txt
├── new.txt
└── temp.txt

0 directories, 4 files
root@hcss-ecs-4ce7:~# cp -rf new cpnew
root@hcss-ecs-4ce7:~# ls
cpnew  cpnew.txt  my.txt  new  new.txt  path1  snap  temp.txt
root@hcss-ecs-4ce7:~# tree cpnew
cpnew
├── cpnew.txt
├── my.txt
├── new.txt
└── temp.txt

0 directories, 4 files

mv指令

mv是move是缩写,代表移动。用于移动文件或将文件改名,常用于备份文件或目录。

语法:mv  选项  源文件或目录  目标文件或目录

功能:

1. 当mv指令的第一个参数和第二个参数都是文件或目录,将会进行重命名

2. 当mv指令第一个参数是文件,第二个参数是目录,将会进行移动,把文件移动至目录中

选项:

        -f  强制覆盖, 如果当目标文件已经存在时,就会强制覆盖

        -i  再覆盖前询问用户是否覆盖(仅在覆盖文件时询问,目录不会询问)

注意:对于重命名目录来说,并不会覆盖目录原来的内容。而是将源目录中的内容移动至目标目录中 

#文件重命名
root@hcss-ecs-4ce7:~# ls
my.txt  path1  snap  temp.txt
root@hcss-ecs-4ce7:~# mv temp.txt new.txt
root@hcss-ecs-4ce7:~# ls
my.txt  new.txt  path1  snap


#如果重命名文件在当前路径下已经存在,那么就会直接覆盖
root@hcss-ecs-4ce7:~# echo "你好世界">you.txt
root@hcss-ecs-4ce7:~# ls
my.txt  new  new.txt  path  snap  you.txt
root@hcss-ecs-4ce7:~# mv you.txt my.txt
root@hcss-ecs-4ce7:~# ls
my.txt  new  new.txt  path  snap
root@hcss-ecs-4ce7:~# cat my.txt
你好世界


#目录重命名(如果重命名目录在当前位置下已经存在,那么就会将源目录中内容移动至目标目录)
root@hcss-ecs-4ce7:~# ls
my.txt  new.txt  path1  snap
root@hcss-ecs-4ce7:~# tree path1
path1
├── myfile.txt
├── my.txt
└── path2
    ├── myfile.txt
    └── path3
        └── path4

3 directories, 3 files
root@hcss-ecs-4ce7:~# mv path1 path

root@hcss-ecs-4ce7:~# ls
my.txt  new.txt  path  snap
root@hcss-ecs-4ce7:~# tree path
path
├── myfile.txt
├── my.txt
└── path2
    ├── myfile.txt
    └── path3
        └── path4

3 directories, 3 files


#移动文件到目录中
root@hcss-ecs-4ce7:~# ls 
my.txt  new.txt  path  snap
root@hcss-ecs-4ce7:~# mkdir new

root@hcss-ecs-4ce7:~# mv new.txt new
root@hcss-ecs-4ce7:~# ls
my.txt  new  path  snap
root@hcss-ecs-4ce7:~# tree new
new
└── new.txt

<think>好的,我现在需要解决用户提到的STM32CubeProgrammer中UART设备激活失败的问题。用户已经提供了相关的引用内容,我需要结合这些信息,并按照系统级指令来组织回答。 首先,用户的问题是关于STM32CubeProgrammer在使用UART模式时激活设备失败,显示“KO”。我需要分析可能的原因和解决方案。根据引用[1],提到了Ubuntu20.04下权限问题和连接错误,这提示我首先要检查系统权限,尤其是在Linux环境下。用户可能在连接串口设备时没有足够的权限,导致无法激活设备。 接下来,引用[2]提到更换烧录器或开发板的建议,这可能涉及到硬件故障的可能性。因此,我需要将硬件检查作为解决方案的一部分。同时,MDK中的错误提示“Not a genuine ST Device”也可能与设备识别有关,这可能涉及到驱动问题或连接不稳定。 接下来,我需要按照用户的要求,分步骤回答,确保结构清晰。步骤可能包括权限设置、驱动检查、硬件连接、固件更新、软件设置和日志分析等。每个步骤需要详细说明操作方法和可能的结果。 同时,根据系统指令,所有数学表达式需要用$...$格式,但这个问题可能不涉及数学公式,所以可能不需要使用。但如果有的话,例如波特率计算,可能需要用$$...$$,不过这里可能不适用。需要确认是否在回答中有必要引入数学表达式,但看起来可能不需要,所以暂时可以忽略这部分。 然后,需要生成相关问题,这部分需要根据用户的问题延伸出相关的问题,例如权限设置方法、驱动安装步骤、其他连接方式的问题等。 最后,确保回答中使用中文,引用标记正确,如引用[^1]和[^2]。并且保持回答真实可靠,结构清晰,分步骤说明解决方案。 现在开始组织回答: 首先,检查系统权限,特别是串口设备的读写权限。在Linux下,可能需要使用sudo或修改udev规则。例如,引用[1]提到Ubuntu20.04的权限问题,需要确保用户属于dialout组。 其次,检查驱动和连接。确保USB转串口驱动已正确安装,设备管理器或lsusb中能识别到设备。引用[2]提到更换烧录器或开发板,所以可能需要检查硬件是否正常。 接着,验证硬件连接是否正确,包括TX、RX交叉连接,以及共地。接触不良或线序错误会导致激活失败。 然后,检查STM32CubeProgrammer的设置,如波特率、停止位等是否与目标板匹配。高波特率可能导致不稳定,可以尝试降低。 固件更新方面,确保目标MCU的Bootloader支持UART,并且已正确进入Bootloader模式。可能需要调整BOOT引脚设置。 查看软件日志,分析具体错误信息,有助于定位问题。例如,是否有超时或校验失败。 最后,尝试其他连接方式,如ST-LINK,以排除UART模块的问题。如果ST-LINK可用,可能问题出在UART硬件或配置上。 相关问题部分,可以生成关于权限设置、ST-LINK连接问题、Bootloader模式进入方法等。</think>### STM32CubeProgrammer UART激活设备失败解决方案 #### 步骤1:检查系统权限配置 - **Linux系统**:使用`ls -l /dev/ttyUSB*`确认串口设备权限,若权限不足需执行: ```bash sudo usermod -aG dialout $USER # 将用户加入dialout组 sudo chmod 666 /dev/ttyUSB0 # 临时赋权(重启后失效) ``` 修改后需重新登录生效[^1]。 - **Windows系统**:在设备管理器中检查USB串口驱动状态,若显示黄色感叹号需重新安装驱动(如CP210x、FTDI等)。 #### 步骤2:验证硬件连接 1. 确认USB转TTL模块的 **TX/RX交叉连接**(MCU的RX接模块TX,MCU的TX接模块RX) 2. 检查 **共地连接**(GND引脚必须连通) 3. 尝试更换USB线或模块,排除接触不良问题 #### 步骤3:配置Bootloader模式 1. 设置BOOT0=1,BOOT1=0(参考具体型号手册) 2. 复位设备后,使用示波器或逻辑分析仪检测UART引脚信号 3. 若无法进入Bootloader,尝试先通过ST-LINK更新选项字节 #### 步骤4:调整软件参数 在STM32CubeProgrammer中: 1. 将波特率设置为 **115200**(默认兼容性最佳) 2. 勾选**Hardware Flow Control = None** 3. 切换停止位配置(1位/2位)测试兼容性 #### 步骤5:诊断固件状态 1. 通过其他方式(如ST-LINK)读取选项字节: ```bash STM32_Programmer_CLI -c port=SWD -ob displ ``` 2. 检查RDP保护等级是否为0(关闭状态) #### 步骤6:分析日志信息 在软件安装目录查看`log`文件夹: - 搜索`Error code 0xXXX`匹配具体错误类型 - 观察握手阶段响应时间是否超时(典型阈值:500ms)
评论 41
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值