单片机杂谈
文章平均质量分 69
记录单片机学习中的点点滴滴
Liangtao`
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【FreeRTOS】关于FreeRTOS中堆栈的一些思考
关于FreeRTOS中堆栈的一些思考裸机时的堆栈问题运行FreeRTOS时的堆栈问题参考文献裸机时的堆栈问题内存被分为许多区域,其中包含堆和栈,当然还有其他一些区域,见内存各区域区别。内存栈中存储的是函数调用的形参、非静态局部变量以及函数调用信息。栈由编译器自动进行管理,无需人为干预。如果函数的局部变量定义大小过大(比如定义在函数内部定义超大型数组等),超过了链接脚本定义的栈区大小将会发生溢出,程序将会崩溃!内存堆是用于动态内存分配的,由编程人员手动进行管理。使用malloc函数手动申请内原创 2022-03-05 13:51:11 · 6758 阅读 · 4 评论 -
嵌入式:一种裸机编程多任务切换方法
一种嵌入式裸机多任务切换方法有时候为了实现一些简单的、对实时性要求不高的任务,采用操作系统不仅增加了程序的复杂性,对低性能单片机的资源占用也是值得考虑的问题。这时候操作系统可能不是必要的,可以通过一种简单的方法,在裸机编程中实现类似“多任务切换”的方法。比如,在某个应用中,我们需要10ms做一次A/D转换,1s串口发送一次数据,500ms读一次外部IO,并且这些任务都不是对时间要求严格的任务,这时候就可以使用下面的方法实现“多任务”,不仅使程序结构更加清晰,也使我们的编程思路更加清晰。以51单片机原创 2021-03-22 20:20:20 · 2465 阅读 · 4 评论 -
传感器数据结构统一封装方法(结构体的使用)
传感器数据结构统一封装方法封装传感器结构体定义传感器在嵌入式开发中,经常遇到大量传感器数据需要获取,有可能这些传感器都是串口通信,IIC通信,或是485通信,区别仅仅是地址不同,数据量不一样,或是解析方式不同。为了增加程序可扩展性或是调试方便,往往会将有关传感器的数据统一进行管理,在C语言中,最常用的莫过于结构体了。封装传感器结构体我这里使用的传感器都是通过RS485进行通信的,是标准的ModBus RTU协议。每个传感器区别为地址不同,寄存器不同,寄存器长度不同。于是乎封装了以下结构体,可以将同一原创 2021-03-14 14:12:52 · 1541 阅读 · 0 评论 -
stm32HAL库 RTC配置并设置闹钟间隔响铃(思路+具体方法)
stm32 RTC配置并设置闹钟间隔响铃RTC基本配置间隔定时为了实现stm32的每隔一定时间RTC闹钟响铃一次,使用了一种笨方法,基本思路是:在RTC闹钟中断获取当前时间,并且修改下一次闹钟中断时间为当前时间+需要定时的时间。 如果有更好的思路请一定告知我,呜呜呜~。RTC基本配置在stm32 cubeMX中RTC部分做如下配置。时钟配置为外部32.768Khz高精度晶振。激活时钟源,激活日历功能。同步预分频值和异步预分频值是根晶振大小有关系的。这里我的板子使用的是32.768KHz的高精度原创 2021-03-14 13:40:41 · 6622 阅读 · 4 评论 -
KeilMDK环境 stm32f10x快速移值FreeRTOSv9.0
KeilMDK环境 stm32f10x快速移值FreeRTOSstm32f10x快速移值FreeRTOS准备工作移值将一些中断向量交给操作系统内核管理测试程序总结stm32f10x快速移值FreeRTOSFreeRTOS由于其短小精悍,开源免费被广泛的应用。在使用FreeRTOS之前不可避免的就是移值。在这里分享一个快速简单、亲测可用的freertos移值教程。其他类型的编译器和单片机也可做为...原创 2019-04-27 21:12:25 · 765 阅读 · 1 评论 -
stm32是如何将寄存器值通过标准库写入寄存器的?
stm32是如何将配置从库函数调用一步一步到寄存器的?0. 前言1.综述1.1 流程2.正式开始2.1 LED库函数初始化2.2 GPIO_TypeDef2.3 GPIOA的访问方法2.4 GPIO_Init函数3.总结0. 前言在平时的学习和工作中,可能很少有人会实际去操作寄存器,但是去了解库函数是如何去操作寄存器是很有必要的。不仅可以加深对stm32的理解还能学习借鉴它库函数的封装架构。...原创 2018-11-25 23:13:09 · 3743 阅读 · 1 评论 -
程序存储和运行时的内存分布(.text .data .bss的区别)
.text .data .bss等的区别,程序存储和运行时的内存分布.text段是代码段。它用来放程序代码(code)。它通常是只读的(程序代码,编译好了就确定了,不可能改来改去的嘛)。.data(ZI data)段是数据段。它用来存放初始化了的(initailized)全局变量(global)和初始化了的静态变量(static)。它是可读可写的。.bss(RW data )段是全局变量数据段。它用来存放未初始化的(...原创 2020-01-01 21:43:07 · 4313 阅读 · 3 评论
分享