自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 收藏
  • 关注

原创 12:HAL----I2C

解决上面遗留的BUG点,为了方便我们只在这里只做主机从机2的//发送DMA//接收///通信速率1//7位寻址模式//开启事件中断//复用开漏输出//MDA通道6配置--发送数据//传输方向:内存(数组)--->外设//内存数据宽度//存储区地址自增//外设数据宽度//外设地址不自增//优先级//双向链接//MDA通道7配置---接收数据//传输方向:外设 ---> 内存(数组)//内存数据宽度//存储区地址自增。

2024-04-28 17:58:26 53

原创 10:HAL---高级定时器

在我们普通的定时器中当CNT=CCR时直接发生溢出。然而我们的高级定时器多了一个重复计数器。

2024-04-20 16:02:26 275

原创 06:HAL----定时器

TIM(Timer)定时器定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时 (计数器、预分频器、自动重装寄存器构成时基单元)不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型。

2024-04-20 15:01:48 994

原创 09:HAL--通用定时器编码器接口

编码器接口,都是上升沿和下降沿都有效的 , 上升沿和下降沿都需要计次 , 所以在编码器接口模式下 , 边沿检测极性选择就不再是边沿的极性选择了 , 而是高低电平的极性选择.之前的代码是通过触发外部中断 , 然后在中断函数里手动进行计次-----见02:STM32--EXTI外部中断。选择下升沿的参数-------就是信号通过一个非门过来,高低电平极性反转----5:极性反转。选择上升沿的参数------就是信号直通过来,高低电平极性不反转---5:极性不反转。上面的2个模式--只在一个计数。

2024-04-20 15:00:46 621

原创 11:HAL--定时器代码总结

DMA循环方式,每次传输4次数据第一次定时1s,第二次定时2s,第三次定时3s,第四次定时4s第五次定时5s,第六次定时2s,第七次定时3s,第八次定时4s第九次定时5s,第十次定时2s,往复循环。捕获中断不会打开更新中断,HAL_TIM_IC_Start_IT()中不会打开更新中断,所以需要我们手动打开: __HAL_TIM_ENABLE_IT(&HandleTIM4CH1,TIM_IT_UPDATE);当我们按键按下,首先发生触发和更新中断,把我们的CNT和预分频器值置为0,保证了起始值为0,

2024-04-20 14:56:45 617

原创 08:HAL---通用定时器功能(输入捕获功能)

下面的以通用定时器为例,当然高级定时器具有通用定时器的全部功能ICP1S:上面经过分频后的信号;这里的捕获指的是产生一个捕获事件。

2024-03-31 17:53:27 941

原创 07:HAL------通用定时器功能(输出比较PWM)

下面的以通用定时器为例,当然高级定时器具有通用定时器的全部功能灰色部分为我们的输入捕获部分,下节说舵机是一种根据输入PWM信号占空比来控制输出角度的装置输入PWM信号要求:周期为20ms,高电平宽度为0.5ms~2.5ms高电平宽度=某电频的持续时间CCR=高电频舵机的控制一般需要一个20ms的时基脉冲(周期),该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。以180度角度舵机为例,那么对应的控制关系是这样的:0.5ms--------------0度;

2024-03-30 23:10:13 837

原创 05:HAL-----看门狗WDT

上面这个预分频j寄存器IWDG PR, 可以配置分频系数, 这个PR和定时器的PSC (//预分频器PSC) 是一个意思 -----------------开始 : A :这个时钟源是PCLK1(36MHz)---------B: 先经过一个预分频器进行分频 , 这个和独立看门狗的预分频器,定时器的预分频器相同---------C: 分频之后的时钟,驱动这个计数器进行计数(6位递减计数器)...........如果在计数器计数结束前,若软件没有向键寄存器写入相应的值,则系统会产生复位。

2024-03-25 15:39:04 937

原创 04:HAL----串口通信UART

通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统通信协议:制定通信的规则,通信双方按照协议规则进行数据收发TX: 发送数据的引脚RX :接收数据的引脚I2C通信:SCL: 时钟SDA:数据SPI通信:SCLK:时钟MOSl:主机输出数据脚MISO: 主机输入数据脚CS: 片选,用于指定通信的对象CAN通信:是差分数据脚,用两个引脚表示一个差分数据USB通信:也是 是差分数据脚双工全双工:就是指通信双方能够同时进行双向通信, 两个数据线分别负责发送和接收数据半双工。

2024-03-17 17:43:41 826

原创 03:HAL---中断

正转-----B相下降沿和A相低由平时同时满足时;反转----在A相下降沿和B相低电频同时满足时;不管有几个中断我们,我们自己写的中断服务函数和处理中断的函数不要我们定义,在HAL库中已经定义了。//注意名字要中断相同//中断处理函数;

2024-03-08 17:43:57 1018

原创 01:HAL库---时钟

我们使用的是STM32F103CT86的型号时钟在在我们的单片机中非常重要,相当于我们的人类的心脏;简单来说,时钟是具有周期性的脉冲信号,最常用的是占空比50%的方波;三种不同的时钟源可被用来驱动系统时钟(SYSCLK)● HSI振荡器时钟● HSE振荡器时钟● PLL时钟这些设备有以下2种二级时钟源:● 40kHz低速内部RC,可以用于驱动独立看门狗和通过程序选择驱动RTC。RTC用于从停机待机模式下自动唤醒系统。低速外部晶体也可用来通过程序选择驱动。

2024-03-05 17:49:00 646

原创 02:HAL库---GPIO

一组有16个IO口PA0~PA15;PB0~PB15介绍GPIO相关的寄存器;

2024-03-05 17:31:55 1221

原创 06:2440----异常与中断

在这五种异常模式中每个模式都有自己专属的R13 R14寄存器,R13用作SP(栈) R14用作LR(返回地址),LR是用来保存发生异常时的指令地址(可以理解为我们上面说的保存现场,用于我们在处理完中断,之后继续处理我们的程序)SPSR保存的程序状态寄存器:表示发生异常时这个寄存器会用来保存被中断的模式下他的CPSR,就比如我我的程序在系统模式下运行 CPSR是某个值,当发生中断时会进入irq模式,这CPSR_irq就保存系统模式下的CPSR。当某些位被置一时,对应的中断被屏蔽,即不会被处理。

2023-12-20 19:14:08 194

原创 05:2440----代码重定义

makefile文件不变这个也就是方法2一个程序,由代码段、只读数据段、数据段、bss段等组成。程序一开始可以烧在Nor Flash上面,运行时代码段仍可以在Nor Flash运行,但对于数据段,就必须把数据段移到SDRAM中,因为只要在SDRAM里面,数据段的变量才能被写操作(CPU无法直接访问NOR FLASH,NOR 不是内存类设备),把程序从一个位置移动到另一个位置,把这个过程就称为重定位。前面的例子,我们只是重定位了数据段,这里我们再尝试重定位整个代码。

2023-12-02 20:57:27 160

原创 04:2440---内存控制器

操作GPIO: 我们可以编写程序,让CPU去访问里面的寄存器eg:GPFCON配置寄存器 . 可以设置这个寄存器,把某个引脚设置为输出或者输入;GPFDATA数据寄存器, 可以设置某个引脚发出高低电平.UART一样我们可以写程序让CPU访问某些特定的寄存器.对于CPU来说,我不关心你这些具体的接口,我只是去操作某个寄存器。我CPU把某些值写给某些寄存器,由这些对应的控制器发出特定的波形。所以这个时候我们的内存控制器就来了。

2023-11-26 17:13:16 513 1

原创 03:2440--UART

​​​​​​​。

2023-11-25 22:33:55 264

原创 02:2440---时钟体系

S3C2440A中的时钟控制逻辑可以产生所需的时钟信号,包括CPU的FCLK、AHB总线外设的HCLK和APB总线外设的PCLK。晶振-----选择器-----PLL锁相环(MPLL和UPLL)具体内容见1------HCLK和PCLK分别挂载在AHB总线和APB总线上面-----在线上面又挂载了许多外设。---是一个控制寄存器,用于控制系统时钟的分频和选择。------挂载在AHB总线上(高速总线)====>挂载了nand flash , LCD控制, USB, 电源管理等外设----136MHZ。

2023-11-12 19:18:15 134

原创 01:2440----点灯大师

栈的增长是随着程序的执行自动进行的,而数据的扩展则需要通过brk 系统调用来显式地完成,brk有一个参数来指定数据段的结束地址,它可比当前值大(表示扩展数据段 ),或是比当前值小(表示缩小数据段 )。我们采用的是交叉编译的方法---使用window书写汇编代码-----将汇编代码传给虚拟机-----在虚拟机下将传来的汇编代码编译为bin文件-----在将bin文件传给window-------window烧写bin文件给Linux开发板;配置GPFCON寄存器的[9:8]位为0b01-----输出模式;

2023-11-11 15:54:13 813 1

原创 单片机与进制数

非位置化数字系统: 一个符号在不同的位置只会表达同样的意思, 不像位置化数字系统同样的一个符号表达不同的意思, 比如:在非位置化数字系统中ⅤⅤⅤ表达的是:5+5+5=15,表达出的数字直接就是他们相加相减的结果,所以非位置化数字系在生活中不怎么使用.: 对于两个二进制数的或运算,一位任意一方的数字为1就取1,当同一位双方都为0时才取0。(遇1则1)----加法:0+0=0,0+1=1,1+0=1,1+1=10 (满2进1)减法:0-0=0,1-0=1,1-1=0,0-1=1(产生错位)

2023-10-29 22:30:18 257

原创 01:linux基础---gcc/makefile/gdb

函数库的概念printf函数在库中;库的默认路径为:编译器中的lib目录库可以指定:-L选项指定的目录 -l选项指定库(没有空格)-labc 意思 找libabc.so或者-labc 意思 找libabc.a的库我们的C程序中,并没有定义“printf”的函数实现,且在预编译中包含的“stdio.h”中也只有该函数的声明,而没有定义函数的实现,那么,是在哪里实现“printf”函数的呢?

2023-10-18 16:42:15 156

原创 16: KEil5的配置

我们需要给他加入几个文件夹: Hardware(硬件----把自己写的一些文件放在这个里面) , Library , Start , System(自己写的一些系统文件写在这个里面----eg: Delay函数) , User 文件里面放入我们需要的文件。------------------二:官网固件库的下载------二:Start文件夹下A: 启动文件。安装支持包----------可以安装keil软件支持所有芯片的支持包, EG: STM32F103C8T6。使用我们选择这个芯片。

2023-10-02 14:11:33 1538

原创 15: 8种GPIO模式和其他资源

我们使用的是STM32F103系列的芯片 , 所以没有红色圈里面的资源。

2023-10-02 14:10:22 151

原创 14:STM32-----看门狗

在stm32f10x_iwdg.h文件里面的独立看门狗函数: 写使能保护/***/在IWDG_KR键寄存器里面写入 使能还是不使能IWDG_SetPrescaler : 设置预分频系数----在预分频寄存器IWDG_PR里面写入IWDG_SetReload : 设置重装值----在重装载寄存器IWDG_RLR里面写入IWDG_ReloadCounter : 喂狗/***/在IWDG_KR键寄存器写入: 启动独立看/***/

2023-10-01 15:15:40 407

原创 13:STM32----PWR

睡眠模式其实都只是内核的操作, 睡眠模式涉及的几个寄存器 , 也都在内核里 跟PWR外设关系不大.停止模式 : 涉及到内核之外的电路操作, 这就需要用到PWR外设了在stm32f10x_pwr.h文件中----启用或禁用对RTC和备份寄存器的访问。使能后备区域的访问在stm32f10x_pwr.h文件中----启用或禁用唤醒引脚功能使能位于PAO位置的WKUP引脚在stm32f10x_pwr.h文件中----进入STOP模式进入停止模式在stm32f10x_pwr.h文件中----待机模式。

2023-09-26 21:24:14 957

原创 12:STM32---RTC实时时钟

在stm32f10x_rcc.h的文件中-----时钟相关的函数: 配置外部低速时钟(LSE)RCC_LSICmd: 配置内部低速时钟(LSI): 这个函数用来选择RTCCLK的时钟源 , 实际上就是配置PPT的数据选择器: 使能--开启或者关闭RTC时钟时钟在选择完毕后 , 需要获取标志位,等待标志完成后在操作//选择外部低速时钟//LSE准备ok了在stm32f10x_rcc.h的文件中-----获取标志位函数在stm32f10x_rtc.h的文件中-----进入RTC配置模式。

2023-09-21 22:20:48 980

原创 11:STM32---spl通信

-------------Flash并没有像RAM那样的, 直接完全覆盖改写的能力. eg:在某一个直接的储存单元首先储存了0xaa 1010 1010 在储存0x55 0101 0101 因为Flash没有直接覆盖数据的能力, 在加上第二条规定的限制实际储存的数据为: 0000 0000 不是0x55, 使用在写入第二给数据前必须擦除之前的数据。------------不能指定某一个字节去擦除, 要擦,就得一大片一起擦, 在我们这个芯片里;(接受和发送)缓冲区-----实际上就是数据寄存器DR;

2023-09-19 18:36:43 820

原创 10:STM32------I2C通信

STM32内部集成了硬件I2C收发电路,可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能,减轻CPU的负担支持多主机模型支持7位/10位地址模式支持不同的通讯速度,标准速度(高达100 kHz),快速(高达400 kHz)支持DMA兼容SMBus协议STM32F103C8T6 硬件I2C资源:I2C1、I2C2支持多主机模型-----STM32采用可以变多主机的模式, 谁想做主机谁跳出兼容SMBus协议。

2023-09-12 16:40:50 1056

原创 09:STM32-------USART串口通信+串口数据包

USART(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步收发器USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可自动接收RX引脚的数据帧时序,拼接为一个字节数据,存放在数据寄存器里自带波特率发生器,最高达4.5Mbits/s 可配置数据位长度(8/9)、停止位长(0.5/1/1.5/2)可选校验位(无校验/奇校验/偶校验)

2023-09-07 21:23:42 2005

原创 08:STM32----DMA数据转运

在stm32f10x dmah文件中配置----MDA初始化在stm32f10x dmah文件中配置----开启MDA在stm32f10x dmah文件中配置----数据寄存器设置: 设置当前数据寄存器 , 就是给这个传输计数器写数据的, 和配置DMA中X.DMA_Buffersize参数相似: 获取当前数据寄存器, 这个函数就是返回传输计数器的值 , 在转运完成后把标志位值1在stm32f10x dmah文件中配置----清除中断标志位: 清除中断标志位。

2023-08-31 15:37:03 886 1

原创 07:STM32----ADC模数转化器

在stm32f10x rcc.h文件中-----配置ADCCLK: APB2时钟72MHz时钟信号然后通过ADC预分频器进行分频,得到ADCCLK钟信号;ADCCLK最大是14MHz , 所以这里只能是6分频或者是8分频6分频:72Mhz/6=12Mhz, 8分频:72Mhz/8=9Mhz在stm32f10x adc.h文件中----选择组----我们选择规则组的输入通道: 参数2--选择通道 , 参数3--选择序列范围1~16 参数3: 指定通道的采样时间。

2023-08-29 15:27:04 1579

原创 06:TIM定时器功能------编码器接口功能

在stm32f10x tim.h文件中的函数------配置定时器编码器接口参数: 第二个参数---见上面的 4:编码器的工作模式第三个(IC1极性)和第四个(IC2极性)参数一样 : ---- 3:编码器接口基本结构中的 边沿检测极性选择这里的上升沿并不代表上升沿有效 , 因为编码器接口始终都是上升沿、下降沿都有效的 , 这里的上升沿参数代表的是高低电平极性不反转-----5:极性反转在stm32f10x tim.h文件中的函数------读取计数器CNT的值:计数器读取到了65535清零。

2023-08-26 11:27:18 461

原创 05:TIM定时器功能------输入捕获功能

在stm32f10x tim.h文件中的函数-----输入捕获的配置TIM_ICInit//选择的通道 PA6对应的为通道1//滤波器//极性 我们选择上升沿触发//分频器 不分频(1)就是每次触发都有效;2分频就是每隔一次有效一次,以此类推//选择触发信号从哪个引脚输入(直连输入)在stm32f10x tim.h文件中的函数----触发源选择:配置TRGI的触发源为TI1FP1: 第二个参数选择触发源。

2023-08-25 12:39:27 1625

原创 04:TIM定时器功能---输出比较功能(PWM)

在stm32f10x tim.h文件中的函数-----配置输出比较单元函数: 配置输出比较单元在stm32f10x tim.h文件中的函数给输出比较结构体赋一个默认的值在stm32f10x tim.h文件中的函数-----改变占空比函数TIM_SetCompareX : 来单独更改CCR寄存器值的函数,可以更改占空比舵机是一种根据输入PWM信号占空比来控制输出角度的装置输入PWM信号要求:周期为20ms,高电平宽度为0.5ms~2.5ms高电平宽度=某电频的持续时间。

2023-08-23 15:26:49 1465 1

原创 03:TIM定时器

TIM(Timer)定时器定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时 (计数器、预分频器、自动重装寄存器构成时基单元)不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型。

2023-08-21 18:23:55 918

原创 02:STM32--EXTI外部中断

配置AFIO在文件中stm32f10x_gpio.h用来复位AFIO外设,调用这个函数AFIO外设的配置就会全部清除: 参数指定位那个引脚, 那这个引脚的配置就会被锁定,防止意外更改GPIO_EventOutputConfig 和GPIO_EventOutputCmd :配置AFIO的事件输出功能的引脚重新映射, 第一个参数可以选择你要重映射的方式,第二个参数是新的状态: 调用这个函数,就可以配置AFIO的数据选择器,来选择我们想要的中断引脚:关于以太网的。

2023-08-14 14:01:29 1052

原创 01:STM32点灯大师和蜂鸣器

RCC_AHBPeriphClockCmd: 第一个参数就是选择哪个外设 ,第二个参数ENABLE(启动) or DISABLE(无效))RCC_APB2PeriphClockCmd和RCC_APB1PeriphClockCmd参数意思一致: 第一个参数选择外设,第二个参数使能ENABLE或失能DISABLE。

2023-08-11 19:10:28 1122

原创 51:电机(ULN2003D)

我们51单片机使用的是直流电机直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转 直流电机主要由永磁体(定子)、线圈(转子)和换向器组成除直流电机外,常见的电机还有步进电机、舵机、无刷电机、空心杯电机等ULN2003是一个单片高电压、高电流的达林顿晶体管阵列集成电路。它是由7对NPN达林顿管组成的,它的高电压输出特性和阴极箝位二极管可以转换感应负载。单个达林顿对的集电极电流是 500mA。达林顿管并联可以承受更大的电流。

2023-07-29 12:38:35 2270 1

原创 51单片机:数码管和矩阵按键

LED数码管:数码管是一种简单、廉价的显示器,是由多个发光二极管封装在一起组成“8”字型的器件;我们的51单片机的1个数码管就相当于由8个发光二极管封装在一起, 所以我们只需要控制8个发光二极管封就可以实现数码管的显示,这款单片机是共阴极连接数码管扫描(输出扫描) 原理:显示第1位→显示第2位→显示第3位→……,然后快速循环这个过程,最终实现所有数码管同时显示的效果,节省I/O口。

2023-07-27 10:47:26 5262 2

原创 STC89C52--实时时钟(DS1302)

DS1302 涓流充电计时芯片包含一个实时时钟日历和31字节的静态RAM.通过简单的串行接口与微处理器通讯这个实时时钟日历提供年月日时分秒信息对于少于31天的月份月末会自动调整还有闰年校正由于有一个AM/PM指示器,时钟可以工作在12小时制或者24小时制。使用同步串行通讯简化了 DS1302与微处理器的接口。与时钟/RAM通讯只需要三根线: CE,I/O (数据线串行时钟).数据输出输入时钟/RAM一次1字节或者在脉冲串中多达31。

2023-07-17 14:04:13 753

原创 STC89C52---定时器,中断

STC89C52系列单片机的定时器0和定时器1,与传统8051的定时器完全兼容,当在定时器1做波特率发生器时,定时器0可以当两个8位定时器用。STC89C52系列单片机内部设置的两个16位定时器/计数器TO和T1都具有计数方式和定时方式两种工作方式。对每个定时器/计数器(TO和T1),在特殊功能寄存器TMOD中都有一控制位-C/T来选择TO或T1为定时器还是计数器。定时器/计数器的核心部件是一个加法(也有减法)的计数器,其本质是对脉冲进行计数。

2023-07-09 16:25:01 1662

空空如也

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

TA关注的人

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