自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

码农木子的博客

代码不仅仅是为了生活

  • 博客(42)
  • 收藏
  • 关注

原创 Vscode搭建C语言多文件开发环境

通过这一篇文章看下来,会觉得vscdoe配置起来非常的麻烦,确实不如集成开发环境好用,但是vscode这主题很舒服,看着方便。折腾下来,发现配置也是按照代码编译原理的逻辑来配置的。首先是程序员编写代码,然后调用编译器gcc编译成可执行文件,最后调试时调用gdb进行调试。1.因此在编译时需要指定:需要编译的源文件,gcc的位置,编译后生成的可执行文件名,tasks.json中完成。2.在调试时需要指定:可执行文件名,调试器gdb的路径。在launch.json中完成。

2024-12-17 14:47:12 1547

原创 11-stm32外设SPI学习

一、SPI帧格式二、SPI配置实验。

2024-10-08 19:54:46 726

原创 10-stm32外设DAC学习

DAC是数字转模拟量的模块,通过软件写入数字,输出对应的电压。STM32F1的DAC的数字部分支持8位或者12位,由于12位是放在32位的低16位里面的寄存器里面的,STM32的寄存器只支持字操作,或者半字操作,所以12位放在了16位的内存里面,从而有左对齐和右对齐的区别,这个也就是软件写数据寄存器时有区别,影响不大。DAC但输出还是挺简单的,要用来输出三角波,双DAC,还得做具体实验时再来研究。总体来说比ADC简单许多,转换公式一点要记住。模拟量 = 数字量*分辨率,这个公式在ADC里面是一样。

2024-10-08 19:53:22 831

原创 9-stm32外设ADC学习

STM32的ADC花样挺多的,支持多通道,多触发源,还支持双ADC模式,这两点组合起来能玩出不少花样,今天通读了一遍ADC章节,还有寄存器,并结合标准库编码,看了正点原子的教程和代码,并进行编码验证。18路输入通道,但是只有一个DR寄存器,所以一次只能采集一个通道,那么为了增强功能,增加了一个通道序列的机制,即可以轮询扫描指定的通道,然后使用DMA来搬运,从而实现多通道模拟量采集。在上图中①是核心,18个通道,选择其中一路,此次实验选择的CH1,映射到PA1上。③是转换结束,是否产生中断的配置。

2024-10-08 19:52:22 789

原创 8-stm32外设定时器学习

本系列,将stm32常用片上外设进行整理,包括大致原理和代码,主要是熟悉如何根据手册去编写代码。便于以后需要做实验时,能够快速编写基本的驱动,然后编写应用代码。本系列基于“标准库”整理,开发板用的是正点原子精英版V1.5,单片机是STM32F103ZET6。开发工具KEIL。主要参考资料有《STM32F103xCDE中文参考手册》《STM32F103xCDE中文数据手册》、《CM3权威指南》、《STM32F103xCDE闪存编程手册》、《精英版原理图V1.5》。

2024-10-08 19:51:28 1064

原创 7-stm32外设看门狗学习

一、独立看门狗二、窗口看门狗。

2024-10-08 19:49:37 545

原创 6-stm32外设DMA学习

二、DMA搬运串口数据。

2024-10-08 19:48:20 907

原创 5-stm32内核NVIC和EXTI学习

NVIC是CM3内核的嵌套中断控制系统,即要产生中断,都得经过这个外设,这个外设是CM3内带的,所以只要是以CM3为内核的单片机都是有的。芯片生产厂商在此基础上进行删减。由于这个NVIC是CM3自带的,而ST公司在其基础上进行删减,所以关于NVIC的手册就有2份,一份是ARM公司写的《CM3权威指南》,一份是ST公司写的《STM32F1xx Cortex-M3编程手册-英文版》。在《CM3权威指南》的7、8、9节有NVIC最完整的介绍,如下图所示。

2024-10-08 19:46:34 975

原创 4-stm32外设串口USART学习

USART是"通用同步异步收发器"的英文首字母缩写,STM32支持多种模式,但是最常用的就是"异步模式",即只需要TX和RX来进行通信。如下图所示,两个设备使用串口进行异步通信。异步模式的串口,代码配置上简单,结构框图也比较简单,但是串口很常用,RS232,RS485,IIC和SPI也和串口有很相似之处,所以熟读串口的手册,理解串口协议原理和代码配置,对后续理解其它通信方式也有好处。

2024-10-08 19:44:56 104

原创 3-stm32外设GPIO和AFIO学习

GPIO即是“通用输入输出”的英文缩写,也就是我们能够从芯片外部看到的一根一根的针脚,我们通过编程去控制这些IO口上的电平为高还是为低,如果这个IO口上的电平直接由CPU控制,那么就是通用GPIO,如果由串口、SPI等外设控制,就叫复用IO。如点亮led灯的实验中,与led灯相连 的那个IO口就是通用IO。在串口1收发实验中,串口1的TX(PA9)和RX(PA10)引脚就是复用IO。啰嗦了这么多,学习STM32还是的把手册看熟悉,得知道那部分知识大致在那个位置,需要查阅时能够及时查看。

2024-10-08 19:43:36 949

原创 2-stm32外设RCC学习

本系列,将stm32常用片上外设进行整理,包括大致原理和代码,主要是熟悉如何根据手册去编写代码。便于以后需要做实验时,能够快速编写基本的驱动,然后编写应用代码。本系列基于标准库整理,开发板用的是正点原子精英版V1.5,单片机是STM32F103ZET6。开发工具KEIL。主要参考资料有《STM32F103xCDE中文参考手册》《STM32F103xCDE中文数据手册》、《CM3权威指南》、《STM32F103xCDE闪存编程手册》、《精英版原理图V1.5》。

2024-10-08 19:42:12 604

原创 1--STM32最小系统学习

目前Cortex-M3内核支持JTAG和SW两种调试接口,而STM32F103ZET6使用的内核就是Cortex-M3,所以STM32F103ZET6也支持JTAG和SW两种调试接口,由于JTAG至少需要5条线,而SW只需要2条线即可,所以SW接口使用更加广泛。STM32支持3种启动方式,从主闪存Flash启动、从系统存储器启动、从内置SRAM启动三种方式,通过BOOT0和BOOT1引脚电平决定启动方式,为了兼容这三种启动方式,所以精英版用朓帽来连接。①电源、②下载、③晶振、④启动、⑤复位。

2024-10-08 19:40:27 530

原创 通过网线传输文件

最近想将笔记本上的文件传输到台式机上,文件有点大,所以想用网线组成一个局域网上网。三、将待共享文件夹共享出去,并分配读取和写入权限。五、在另外一台计算机上输入本台计算机ip地址即可。六、如果不通,可能是防火墙拦了,把防火墙关了看看。二、将两台电脑网口都配置成自动获取IP和DNS。四、可改成无密码进入。

2024-09-26 21:06:23 344

原创 台式机通过笔记本上网

由于台式机只有网口,没得wifi网卡,因此想通过笔记本连wifi,再通过网线将笔记本和台式机连接起来,从而实现台式机通过笔记本的wifi上网,即让笔记本当台式机的网关。①连接上wifi,然后打开网络和internet管理->更改适配器选项,如下界面。再安如下配置,将wifi共享给网口。三、台式机网卡配置成自动获取IP和DNS,配置步骤和笔记本一样。五、如果不成功,可能是被防火墙拦截了,关闭防火墙再试。③网口配置成自动获取IP和DNS即可,配置步骤如下。四、用网线将笔记本和台式机连接起来即可。

2024-09-26 20:38:45 3117

原创 Keil5安装STC支持包

④打开keil5新建工程,选择device时查看有无STC支持包即可,如下图。③打开STC-ISP并按照下图操作即可。①安装完成Keil5支持51开发环境。②下载STC-isp。

2024-09-26 20:17:43 1775

原创 Keil5安装arm和C51共存环境

⑤将Keil5_C51下的TOOLS.INI文件拷贝到Keil5_MDK目录下TOOLS.INI文件的末尾,并修改执行路径。②点击c51v95a.exe进行安装,一路next,安装在Keil5_C51目录下。③点击MDK539.ext进行安装,一路next,安装在Keil5_MDK目录下。①建立两个文件夹用于存放Keil5 C51安装程序和keil5 mdk安装程序。④复制Keil5_C51下的C51到Keil5_MDK目录下,如下图。⑦将Keil5的ID拷贝到注册机中生成。②Keil5 C51安装包。

2024-09-26 20:09:35 1937 3

原创 C语言实现冒泡排序和简单选择排序

最近学习过程中,简单记录一下这些简单的算法

2024-05-26 10:57:14 173

原创 C语法:格式符号%f和%lf引发的错误

执行到: scanf("%f",&profit);时,由于profit是double类型,其占位符因该是%lf,而我写成了float的占位符%f,当键盘上输入8后,profit的值是0,故最后输出也是0。printf("请输入本月利润\n");有明白两者原因的大佬请评论区解答一下。

2024-05-12 15:32:07 312

原创 C语法:for循环执行顺序

外出循环先执行i=1,再判断i<3为真,内层循环执行j=1;=i为假,退出内层循环,执行i++;判断i<3为真,继续执行j=1;=i为真,且j<4为真,执行printf输出i=2,j=2;=i为假,退出内层循环,执行i++;判断i<3为假,退出外层循环。:先执行表达式1,再执行表达式2,若表达式为真;在执行表达4,再执行表达式3,再判断表达式2;即:表达式2为假,则退出循环,表达式2为真,执行表达式4,执行表达式3,再判断表达2,如此循环,表达式1只会在第一次执行。故最终结果是输出i=2,j=1;

2024-05-12 13:59:59 383

原创 嵌入式常用5种通信协议

嵌入式常用五种通信协议为:IIC、SPI。由于这几种通信协议十分相似又有区别,所以分组记忆,红色的为一组,蓝色的为一组。①组都有两条线,且都是异步通信没得时钟线,②组都有时钟线。关于这五种协议网上有很多教程,也说了很多,现根据自己理解总结如下。①电气接口规定 ②物理层时序图规定 ③协议层数据帧格式一、第一组串口为核心:只有两根线:RX和TX,只能实现点对点通信,使用TTL电平,点对点就是只能两台设备通信的意思,对立面是多点通信。

2024-03-14 21:03:53 794

原创 STM32外设分类--学习笔记

本文在于根据自己的理解,将stm32f103外设按照功能分个类别,便于记忆。下面的几张图一定要熟悉,后期编写代码时能够快速找到想要的功能和对应的引脚。我使用的工具链是:使用CubeMX完成keil5工程搭建和引脚初始化功能,然后用Keil5编译和调试代码,再使用VScode阅读和编写代码。至于为什么要使用这三个工具组合起来,是因为这三个软件各自的优点不能集于一身,只能分开使用。

2024-03-12 10:45:00 4303

原创 STM32的DMA搬运串口数据

DMA:Direct memory access controller,即直接内存访问控制器,简单点来说,dma的功能就是将数据从A搬运到B,而不需要cpu的参与。A和B均可以是内存和外设。即有内存到内存、外设到外设、外设到内存、内存到外设四种情况。今天我们的实验用到的就是内存到外设的情况,和外设到内存的两种情况。参考手册上有寄存器说明,但是操作寄存器的工作有hal库帮我们做了,所以我们重点放在理解初始化dma的结构体上,配合代码,方便理解和上手,代码读懂了,在结合寄存器手册,思路就非常清晰了。

2024-03-11 15:40:19 1289

原创 stm32的SysTick外设介绍——学习笔记

SysTick即系统定时器是一个内核外设,而不是片上外设,寄存器手册说明需要查看《Cortex-M3编程手册》,具体是哪一款内核就查哪一款内核的手册,我用的stm32f103所以我查的Cortex-M3。其实就是个24位递减计数器,计数周期是1/SYSCLK,stm32f103里面SYSCLK=72MHZ,所以其计数周期是1/72*10^6s = 1/72us。

2024-03-10 12:23:45 536

原创 stm32的EXTI的初始化-学习笔记

最近在学习stm32外设的过程中,学到EXTI这个外设的时候,感觉有点复杂,虽然是hal库开发,但是不明白所以,所以跟着也野火的教程,一遍看寄存器,一边看hal库的例子,写一篇记录在此,以备查阅。以下叙述思路:①EXTI功能框图是最重要的,因为不仅仅可以大致看出配置流程,还能看出寄存器的控制过程。②GPIO的初始化③AFIO和CR1/2/3/4寄存器和EXIT0-15的映射关系,这个可以在手册AFIO章节中看④NVIC的初始化。

2024-03-07 17:59:51 1385

原创 STM32的GPIO初始化配置-学习笔记

GPIO_TypeDef中就是控制GPIO的7个32位寄存器,具体每个bit位的作用记得看参考手册。这个结构体不需要我们传入参数。我们需要修改的是GPIO_InitTypeDef结构体。GPIO_InitTypeDef结构体定义如下,可以由我们自己配置gpio引脚,速度,模式,这三个参数都是去修改GPIO_TypeDef里面的成员的某个位的。/*!/*!/*!

2024-03-07 14:53:52 4896

原创 stm32启动文件和RCC时钟树-学习笔记

对应的各位的解释如下,此处截图野火提供的中文版参考手册,上图寄存器定义是截的英文手册的图。①PLLXTPRE:在①处可以看到PLLXTPRE可以将HSE二分频或者不分,此处我们的HSE是8M,我们选择不分频。故我们需要将PLLXTPRE置0.在②处,我们选择HSE还是HSI作为PLL的输入时钟,此处我们选择HSE,故我们需要将PLLSRC置为1。③PLLMUL:③处是将HSE频率放大多少倍,我们选择放大9倍,则PLLCLK等于8*9=72MHZ。我们需要将PLLMUL位置为0111.④SW。

2024-03-05 17:27:17 1174

原创 stm32的HAL库和各文件作用—学习笔记

①内核支持的库由arm公司编写,core_cm3.h头文件里面实现了内核外设寄存器的映射。stm32f10x_config.h:主要用于包含外设驱动头文件,而stm32f10x_config.h被包含在stm32f10x.h头文件中,故stm32f10x.h成为了stm32唯一打包的头文件。由于stm32芯片是用的arm的内核,st公司做到外设,由于arm的内核通用,芯片公司可以在这个内核基础上设计自己的外设,因此为了方便用户开发,arm公司联合芯片厂商建立CMSIS标准。,与外设地址相关的都在这里面。

2024-03-04 22:44:38 1709

原创 VScode搭建C/C++工程环境

原来没有搞懂tasks.json和launch.json文件的作用。tasks.json指定编译器gcc.exe的路径,指定要编译的源文件,指定编译生成的可执行文件名。launch.json:指定调试器gdb.exe的路径,需要指定tasks.json中设置的可执行文件名。t=N7T88.配置C++运行和调试环境_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV19c411G7ey/?

2024-02-25 00:07:49 1472 1

原创 通过stm32CubeMX下载stm32库和手册的方法

思路:安装stm32cubemx软件,然后通过这个软件下载库包,并查找存放路径,然后打开。

2024-02-22 15:42:07 1309

原创 C语言语法和库函数-学习笔记

记录C语言语法及库函数的使用方法。主要根据网站——“C语言菜鸟教程”——整理而来,和网上资料,如有侵权联系删除

2024-02-21 22:46:01 1059

原创 vscode前进/后退快捷键修改为sourceinsight的快捷键

vscode前进后退快捷键修改

2024-02-21 22:21:47 536

原创 Vscode代码区域高亮和括号匹配

VScdoe中代码大括号匹配和代码区域高亮

2024-02-21 22:10:34 2349

原创 ubuntu杀死ping进程

ubunbtu中杀死进程ping

2022-12-06 08:55:26 622

原创 Python初学记录

566555665

2022-12-04 19:50:08 245

原创 Ubuntu18.04无法安装tree的问题

Ubuntu18.04安装tree命令时,无法解析域名问题

2022-12-04 00:52:37 671

原创 虚拟机Ubuntu18.04开机后没有网络的解决办法

Ubuntu18.4开机后无法连接网络

2022-11-28 23:16:05 3660 2

原创 常用博客技术论坛

常用技术论坛

2022-11-23 21:30:05 202

原创 Linux网络编程学习记录

Linux网络编程学习笔记

2022-11-08 18:09:37 236

原创 Ubuntu22.4学习记录

Ubuntu学习笔记

2022-11-08 16:18:43 2708

原创 Centos7 学习记录

记录自己在学习centos系统中的学习过程,防止忘记

2022-11-03 23:53:05 1138

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除