自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HAL库学习记录——HAL库文件详细与新建属于自己工程

在HAL库的开发中,官方下载专用的HAL库,其中不同的文件夹有不同的定义。首先介绍Drivers、CMSIS之中文件夹关键信息。那么我们如何新建属于自己的工程模版。最终我们需要的是操作用户层。

2024-05-08 16:40:35 127 1

原创 HAL库学习记录——配置寄存器

在之前51学习操作寄存器的时候,十分麻烦,首先要找到对应的寄存器配置地址,再进行操作。当我们引出结构体这个概念后,用结构体赋予寄存器首地址,然后用结构体的顺序去对应每个功能。定义好每个结构体后,利用指针强制转换这个结构体,用他去指向外设的受地址,那么这个指针内就是对应上每个外设的首要地址+偏移量。io,其实代表着定义这个结构体后,每次执行都要访问寄存器值,这样防止值变动后,系统不知道有变动。构建出底层之后,就要封装库函数,直接操作指针就方便很多。构建完引脚定义后,使用枚举体定义构建库函数来初始化引脚。

2024-05-08 14:13:01 195 1

原创 学习笔记_C语言指针

那么如何实现多返回值设计呢,在子函数定义了int *max 指针,然后在主函数中有声明int MAX这个参数后,内存空间开辟4个字节给int 调用子函数时,会申请属于*max的指针地址,64位计算机有8个字节空间,那么在调用子函数时,用上取地址&取MAX这个int数据地址给了这个指针空间,当子函数运行时候,根据指针地址索引到MAX这个存储空间,修改这个存储空间值,调用函数结束后 int MAX这个空间值也跟着改变了,就实现多返回值的改变,此时指针所占空间也销毁。

2024-04-30 15:59:05 151

原创 51单片机如何计算串口波特率

例如,配置TL1 TH1寄存器 0xF3那么换成十进制就是先换成2进制1111 0011 从左到右2七次幂累加起来就是243,一共会计时256s则 256-243=13那么13个数溢出,那么12MHZ的晶振在计数器12T的模式下1us振动一次,那么13us溢出一次,那么溢出频率0.0769230769230769/16=0.0048076923076923MHz=4807.69...HZ那么波特率就是4800,刚好等于设置的波特率。并且发送数据,编码后的数据是以ASCI编码形式显示,也就是16进制两位。

2024-02-20 15:39:02 349 1

原创 51单片机 串口通讯协议

T1溢出率控制波特率,SBUF是串口数据缓存寄存器,读写都用这个地址,发出收到一个字节的时候都会产生一个TI或RI中断。全双工可以看做是打电话,半双工可以看做是对讲机,同步通讯一般带有时钟线,通常称这些为总线协议。51单片机中使用UART作为总线。51单片机内部收发数据。串口通讯一般就四根线。

2024-02-19 10:02:07 561 1

原创 51单片机定时器

控制中断系统的本质就是控制单片机内部开关用不同寄存器表示内部线路的连接,不同的线路有不同的作用与功能。定时器是单片机内部资源,和原本delay函数不一样,不会占用CPU运行资源。SYSclk计时器时钟,可以由单片机提供,也可以由外部IO引脚提供。TL0与TLH计数系统,总共16位 65535个数。51单片机定时器有不同的工作模式。+12与+6分别为分频。定时器与中断系统原理图。

2024-02-02 15:57:58 370

原创 51单片机矩阵键盘

矩阵键盘是输入扫描型,通过不断的扫描输入端检测输入端信号。单片机IO口既可以识别输入输出,是弱上拉强下拉。调用两个函数实现Helloword。目的是为了减少IO口使用。

2024-02-02 14:07:46 451

原创 51单片机静态数码管显示

再用74HC25扩展输出能力,芯片本身高电平输出能力不行,需要外接芯片控制当前状态输出,CE为Chip Enable 使能接口,DIR是转向接口,可以选择左向右转向,右向左转向。要点亮一个数码管,首先用3-8转换器用三个IO接口控制8位输出,等于进制转换。利用芯片如图 G2A G2B为使能接口需要低电平。有参数有返回值的调用函数例程。先了解C语言重要概念,数组。封装出来数码管子函数调用。

2024-01-30 15:22:37 488 1

原创 51单片机按下按键,点亮一个灯

利用IF语句判断代码,读取寄存器中IO口数据,单按钮点下之后可以亮灭,头文件之中包含对P3引脚单独开启关闭IO的注释,其他头文件不一定有。实现功能,按下不松手的话,灯不会点亮。

2024-01-29 16:18:51 492

原创 嵌入式51之点亮一个LED

CPU通过指令直接访问寄存器,锁存当前输出状态,通过驱动器放大当前输出状态控制一组输出IO例如,8位CPU 控制8个一组寄存器。因此控制P2低位输出低电平,那么就要输出1111 1110转换成十六进制127。电阻为102 阻值为1K 10*10²,前两位有效数字,第三位是小数点位置。此处RP7电阻作用为限流电阻,所以点亮需要控制引脚输出低电平,点亮灯。全称 Light Emitting Diode 区分正负极单向导通。一般引脚长为正,负为短。

2024-01-24 18:24:57 320

原创 常量与变量

register:寄存器类型,资源少,速度快(建议型)只能定义局部变量,只能定义32位大小数据类型,没有地址,在寄存器中无法打印查看或使用。标识常量 (编程过程中不会改变) #define 宏定义,宏名用宏体替换,不检测语法,在预处理时候就完全处理了,占编译时间。extern:说明型,不能改变被说明变量或类型,拓展变量使用范围。区分:整型常量,实型常量,字符常量,字符串常量,标识常量。变量:在程序执行的过程中,值发生变化的值,保存特殊内容。auto:默认,自动分配空间,自动回收空间。

2024-01-23 15:25:39 400

原创 1、数据类型-二进制及数值类型的存储

进制转换,实数转换成二进制需要向前补齐到32位0,2进制转8进制可以用8421码,3个分一组,因为8进制最大就是4+2+1=7,16进制同理4个一组。32位变成8位肯定丢失精度,不同数据类型转换有两种,分别位隐式转换:自动向精度高的方向靠拢,显式转换:强制转换。在32位二进制中,31位是表示数据±,30-23位表示(8位)指数部分,0-22表示小数部分(精度部分)字符串类型 ASCII表 表示人们常看见的符号(三位十进制)(两位八进制)0表示046(10)30(8) A表示089(10)59(8)

2024-01-19 17:24:41 566 1

空空如也

空空如也

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

TA关注的人

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