- 博客(15)
- 收藏
- 关注
原创 51单片机3—独立按键控制流水灯的方向及快慢
由于Delay函数延时是堵塞式延时,当流水灯在流动时若恰好在延时函数起作用时进行按键按下,则不会检测到按键,除非长按使其有充分时间被检测到。
2025-11-12 17:21:42
154
原创 51单片机学习日志2——按键控制及消抖
由于按键是由弹簧触发,当按下松开时按键会出现抖动,需要延时函数进行检测。一般将跳帽连接至32,使2引脚接地,当按键按下时输出低电平。逻辑是过一段时间(大概20ms)再进行检测是不是真的按下。左边321代表两个跳帽。
2025-11-11 22:46:28
156
原创 51单片机学习日志1-点亮LED灯
首先74Hc138读取P2引脚的5,6,7,对应的是八位二进制数的高三位。引脚命名分为PXx X0-4, x为0-7代表寄存器储存8位二进制数。一、51单片机芯片结构(以蓝桥杯芯片IAP为例)将其高三位置100,Y4取0,经或非门Y4C取1。74hc573打开,即可控制P0引脚控制小灯。74hc573拥有八路输出的头透明锁存器。74hc02或非门 全为零则输出1。1.对二进制数的运算符号有些不收悉。2.对变量类型的选择不是很懂。74hc138遵从图中表。
2025-11-11 22:20:08
195
原创 STM32学习日志 输入捕获代码示例
单独配置一个输入捕获通道配置两个输入捕获通道用于测量占空比和频率给输入捕获模式结构体一个初始值调用该函数进选择从模式触发源调用该函数选择主模式的触发源使用从模式分别配置通道1234的分频器获取CCR的值。
2025-10-06 14:43:46
438
原创 STM32 TIM输出比较&PWM及舵机等硬件介绍
而我们GPIO口只能输出数字信号,当我们需要控制电机的速度或者是LED亮度的时候我们就需要一种可以连续变化的信号而不是只有打开关闭两种状态的信号。输出比较是通过设定一个CNT值与CRR寄存器值进行比较,对输入电平进行置1或零及反转电平操作来输出一个不同于输入方波信号的占空比的PWM信号。PWM的分辨率:描述的是CCR的变化范围大小,取决于ARR,这是由于CCR只能在零到ARR范围内,ARR越大,CRR区的范围也就越大。这些是配置极性选择的,polarity(极性)前面带N是用来配置高级寄存器的互补通道的。
2025-09-10 21:58:37
1007
原创 STM32学习日志 定时器定时中断和定时器外部时钟选择
以下函数是用来配置选择时钟函数配置内部时钟选择ITRX其他定时器的时钟选择TIX捕获通道时钟选择性ETR通过外部时钟模式1输入的时钟选择性ETR通过外部时钟模式1输入的时钟单独用来配置ETR引脚的预分频器、极性、滤波器这些参数的。
2025-08-23 21:08:08
883
原创 STM32学习日志 TIM定时中断
时钟是一种周期性的方波信号,TIM可以对时钟信号的波形进行计数(如出现上升沿或下降沿就进行加一计数),由于是周期性函数,计数就相当于计时⏲,再加上中断函数使达到计数设定值时就触发中断,从而达到定时功能16位计数器,预分频器,自动重装寄存器的时基单元,在72Mhz计数时钟下可以实现最大59.65s的定时自动重装寄存器用来设置中断值。
2025-08-23 09:30:37
660
原创 STM32学习日志 EXTI外部中断函数
1.配置时钟信号,但有些不用如EXTI,NVIC等2.定义外设XXX_Init3.创建结构体设置外设,有些只有单一参数不用结构体2.注意不要在中断函数和主函数调用同一个外设。
2025-08-19 17:27:52
1063
原创 STM32学习日志 程序编写大概流程
为什么是8位,明明一位就够了,因为C语言所能操作的数据类型最小为8位。读取一位输入引脚的输入状态,并返回8位的无符号整数。读取整个GPIO口的输入状态,返回16位无符号整数。读取一位输入引脚的输出状态,并返回8位的无符号整数。读取整个GPIO口的输出状态,返回16位无符号整数。为什么是16位,因为一个引脚数据占一位。可以跳转至定义查看总线上有哪些外设。时钟信号设置在AHB总线。对整个GPIO写入状态。3.设置引脚默认状态。对一位引脚写入高电平。对一位引脚写入低电平。设置在APB1总线上。
2025-08-13 14:52:53
313
原创 stm32学习日志——GPIO
并且寄存器有32位,GPIO只占用低位的16位,但这只是对于数据寄存器,如果对于配置寄存器,每个引脚需要4位配置模式,所以16个引脚需要64位 ,需要两个寄存器。GPIO一共有16位,每一位代表一个引脚,用0,1表示引脚的高低电平状态。当输出控制接收到高电平1:p-mos打开 N-Mos关闭,输出高电平。所以模拟输入接在触发器的输入,复用功能输入接在施密特触发器的输出端。接收到低电平时:N-mos管打开,p—mos管关闭,输出低电平。寄存器用来处理数据,用于接收总线的数据和传输给总线数据。
2025-08-13 12:14:14
236
原创 [笔记]数组到底是不是指针
这里的 *p 本质是数组(相当于 arr),当它出现在表达式中(例如 printf("%p", *p))时,会触发这种「退化」,自动转换为指向首元素 arr[0] 的指针(类型为 int*)。对数组指针 p 解引用(*p),得到的是 p 所指向的对象 —— 也就是数组 arr 本身(类型为 int[5],即 “包含 5 个 int 的数组”)。这是由 C 语言中「数组类型的隐式转换规则」决定的,核心原因是:*p 的本质是整个数组,但数组在表达式中会自动「退化」为指向首元素的指针。其他类型也都可以这样定义;
2025-08-08 15:39:43
378
原创 学习C语言的第二天(printf和scanf)
双引号内仅为单个格式化字符时,读取数据时会跳过空格,换行等空白字符直到往后读取到符合的数据类型,若已读取到符合类型的数据则空白符仍会终止函数读取。但如果双引号内如果有格式要求如scanf("B=%D")则就不会跳过空白字符寻找后面的正确形式的数据,但解决方法也有看下文。当用户从键盘中输入数据时会先传入缓存区,再通过scanf getchar等函数在缓存区读取数据。这里不列举一些常用的格式化字符和冷门的,主要列举一些主观认为好用的字符。scanf返回的值为整型,代表成功扫描的数据个数。
2025-08-01 14:52:38
854
空空如也
打开工程后代码不显示
2025-08-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅