- 博客(45)
- 收藏
- 关注
原创 DS1302模块学习笔记
DS1302自带识别2000-2099年间的平年和闰年,自动分配2月的天数。工作电压2.0~5.5v包含了3.3v和5v,所以单片机可以给ds1302供电。
2025-01-13 20:16:22
452
原创 单片机裸机的启动代码功能及他们的流程
堆栈是程序运行时用来存储局部变量、函数返回地址等数据的区域。程序启动时需要设置堆栈指针(SP)指向堆栈的顶部。
2024-12-28 15:58:09
361
原创 FreeRTOS跟裸机的区别(以及基本知识)
FreeRTOS是一种轻量级的操作系统内核,专为嵌入式设备设计;而“裸机”(Bare-Metal)编程指的是直接在硬件上运行程序,没有操作系统的抽象层。它们之间主要区别在于程序的复杂性、开发难度、系统资源管理能力以及任务的调度方式。
2024-11-13 21:29:41
888
原创 中断服务程序要注意的地方
在实现中断服务函数(Interrupt Service Routine, ISR)时,有几个关键点需要特别注意,以确保系统的稳定性和高效性
2024-09-16 10:38:25
657
原创 字符串转换为整数、整数转换为字符串
是 C 语言标准库中的一个函数,用于将格式化的数据写入一个字符串中。它的用法与 类似,但不同的是, 输出到标准输出(通常是屏幕),而 输出到一个字符数组(字符串)。输出结果:在这个例子中, 将 和 分别格式化为字符串,并将结果存储在 中。 函数是 C 语言标准库中的一个函数,用于将字符串转换为长整型()数值。与简单的 不同, 提供了更多的功能,例如进制选择和错误处理,适合更复杂的场景。运行结果:
2024-09-09 22:05:48
528
原创 static 变量和 static 函数各有什么特点?
关键字在 C、C++ 等编程语言中用于指定变量和函数的存储类型和可见性,其特点如下:作用域:生命周期:全程生命周期。即使在函数执行完成后,局部静态变量的值也会保留。初始化:全局静态变量和局部静态变量都在程序启动时被初始化一次,如果没有显式初始化,它们会被默认初始化为零或空指针。作用域:静态函数的作用域仅限于定义它的文件内。即使在其他文件中有相同名字的函数,它们也不会发生冲突。这样可以避免名字冲突,并增加封装性。生命周期:静态函数的生命周期和其他函数相同,即程序运行期间都存在。调用:静态函数只能在定义它的文件
2024-09-09 19:57:32
394
原创 volatile 关键字
volatile关键字在编程中,尤其是在C和C++语言中,用于指示编译器一个变量可能会在程序的执行期间被意外的更改,因此每次使量的时候都必须从读取它的值,。这个关键字提醒编译器不要对这个变量的读取和写入优化,以保证程序运行的正确性。
2024-08-14 21:08:05
469
原创 普通PCB布局
5、如果板中有多个AD转换芯片尽量将几个ADC放在一起模拟地数字地在ADC下方单点连接,模拟地和数字地也应用磁珠或者0R电阻进行隔离。1、画好板子形状之后,主控芯片尽量放在板的偏中心地方,电源放在板子的开阔地方便于散热。10、走线的时候优先对差分线进行布局,尽可能的减少过孔数量和拐角,减少信号的反射。3、布局的时候,尽量模块化布线,将所有元器件分成几组分别进行布线。2、在重要的信号附近加测试点,方便调试的时候进行测量。4、相邻的焊盘需要相连,首先确认在外面进行连。9、使用相同电源的尽量放在一起。
2024-08-10 12:57:56
444
原创 stm32寄存器开发
也可以直接对寄存器赋值 abc->de = 0x00000000 相应的也可以直接读取寄存器的值 data = abc->de 在通讯发送和接收数据寄存器 USART1->DR非常好用,可以对整个数据寄存器进行读写操作。//同理2的2进制是10 相当于10从最右边开始左移了0位 作用是把GPIOA的CRH寄存器的最后2位置1 开始启动某些功能。abc->de |= (x
2024-06-02 21:37:07
323
原创 stm32学习之ADC
借助江协科技ppt学习STM32F103C8T6。AD.c://例子adc单次扫描不连续。ADC1和ADC2通道引脚一样的。
2024-03-23 20:10:46
206
原创 定时器输入捕获
检测到左边的通道123,某一个发生电平翻转(与其他通道电平不同)会通过输入滤波器,可以去到ICx->预分频器->由输入捕获/输出比较寄存器(再一定时间里计数)得到计数值返回到CNT计数器里(CNT由内部标准时钟驱动)->下一个上升沿来前CNT先清零 (配置从模式复位清零,由硬件执行清零)*(频率不要太小,频率太低计数有可能会溢出(超过计数范围65535) )
2024-03-13 23:01:37
405
原创 使用Arduino点亮ESP32S3R8N8
Arduino 使用的是基于 C/C++ 的编程语言,但是进行了一些简化和封装,使得编写代码更加简单和易于理解。,Arduino 的编程语言相对简单易懂,即使你没有深厚的编程基础,也可以通过学习和实践快速上手。如果你有 C/C++ 的基础,那么学习 Arduino 编程将会更加轻松。: 这个函数在程序启动时运行一次。选择工具下的开发板和你的连接端口(端口要安装CH340)使用Arduino之前,先了解这一下他的编程语言。只需要知道怎么用就行,不需要了解内部结构。用于执行程序的主要逻辑。
2024-03-10 22:11:20
1247
1
原创 配置定时器输出比较(输出PWM波)
配置输出比较(PWM波):1、打开定时器和所用定时器通道OCx(x=1,2,3,4)所在的GPIO的时钟。输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形。配置TIMx_CHx_所在引脚的GPIO模式为复用开漏输出 ->定时器控制引脚输出PWM波。通道OC1、2、3、4分别各自对应SetCompare1、2、3、4。圈起来的对应功能是在输出停止时,强制置0/1》红线接5V,棕色接地,黄色接输出。借用江协科技ppt学习一下。
2024-03-07 22:39:59
1075
1
原创 引脚的重定义功能
503:部分复用1 504:部分复用2 505:完全复用 复用模式不同,复用引脚就不同,要根据复用模式来选择复用的引脚。以PA0为例,我想同时使用USART2_CRTS和TIM2_CH1_ETR功能,因为一个引脚只能同时实现一种作用,那我只能找到带有重定义(映射)TIM2_CH1_ETR功能的PA15。这样复用引脚就配置完成。
2024-03-07 13:23:01
1994
1
原创 STM32里定时器一边定时,一边运行其他代码,为什么对定时没有影响
这是因为定时器的计时是由硬件中的计数器来完成的,而不是由CPU执行指令来完成的。即使CPU在执行其他代码时,定时器的计数器仍在按照设定的频率进行计数,当计数器的值达到设定的定时时间时,定时器会触发相应的中断或事件,不会受到其他代码的影响。在STM32中,定时器是通过硬件来计时的,定时器的工作不会受到软件代码的影响。即使你同时在程序中运行其他代码,定时器仍然会按照设定的定时时间定时触发。这也是定时器在实时系统中常用的一种功能,可以用于精确的时间测量和控制。
2024-03-04 17:36:43
693
1
原创 stm32学习4——定时器中断配置
配置定时器:选择时钟来源——选择时钟模式——配置时基单元——使能中断(中断输出控制)——配置NVIC(打通通道)——打开定时器。还是以江协科技ppt来学习,这次以配置通用定时器TIM2为例。定时器配置可能用到的函数(在库函数中的tim.h)如果配置高级定时器TIM1,还要增加一点东西。
2024-03-04 13:46:03
794
1
原创 stm32学习3,配置外部中断函数
通过这幅图我们很容易知道:配置外部中断函数,使用stm32先要打开时钟(GPIO,AFIO,EXIT,NVIC),再配置GPIO,再配置AFIO,再配置EXIT,再配置NVIC。最后写实现外部中断函数。
2024-03-01 20:30:12
440
1
原创 stm32学习2--按键和光敏传感器
电路图中N1为光敏电阻,光敏电阻的阻值与光照强度之间有一定的关系。一般来说,光照强度越大,光敏电阻的阻值就越小;光照强度越小,光敏电阻的阻值就越大。这是因为光敏电阻的阻值受到光照强度的影响,光照强度越大,光敏电阻中的光敏材料会吸收更多的光子,电阻值就会减小。第1:PA0接一个按键再接地,为了让按键实现按下为低电平松开为高电平,内部一定是高电平,所以PA0要设置为上拉输入模式。在这次学习中我使用光敏传感器和蜂鸣器,作用:当环境光比较大时,蜂鸣器回响。同理第2种要设置为下拉输入模式。借助江协科技ppt说一下。
2024-02-29 20:51:48
594
1
原创 stm32学习1之成为点灯大师——流水灯
GPIO口时先要配置时钟——GPIO初始化——配置GPIO——PA0到PA7按顺序各自点亮一次——流水灯大师。使用GPIO口时先要配置时钟——GPIO初始化——配置GPIO——对某一个口不断反转电平——成为点灯大师。
2024-02-28 21:03:55
478
1
原创 STM32基于标准库新建工程
回到固件库文件夹->Library->CMSIS->CM3->DeviceSupport->ST->STM32F10x->startup->arm->(复制全部)到工程文件夹里再新建文件夹(start)用来存放启动文件。回到固件库文件夹->Library->CMSIS->CM3->DeviceSupport->ST->STM32F10x->把这3个复制到stm32xxx工程模板的startup文件中。回到固件库文件夹->project->……->复制选中的这三个到工程模板里的User中。
2024-02-27 17:00:30
452
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人