自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (1)
  • 收藏
  • 关注

原创 Stm32H7XX GCC下分散加载实现

stm32分散加载

2022-09-17 17:12:46 1337 2

原创 Stm32F4XX开启FPU浮点运算

stm32开启FPU

2022-08-26 10:23:05 2597 3

原创 Rtthread event实现源码分析

Rtthread eventevent主要用于线程间通信,线程结构体中有thread->event_info成员,存放FLAG标志,当FLAG标志为RT_EVENT_FLAG_AND时,需要满足(thread->event_set & event->set) == thread->event_set 才能唤醒该线程当FLAG标志为RT_EVENT_FLAG_OR时,满足 thread->event_set & event->set 即可唤醒线程。

2022-04-23 17:00:32 408

原创 Rtthread信号量/互斥量实现分析

rtthread 信号量与互斥量

2022-04-23 15:54:55 570

原创 C++二级指针和指针数组的关系

C++二级指针和指针数组的关系 char * buf[2] = {"hellow", "world"}; char **m = buf; //m指向数组的首地址,*m 取buf[0]的值,*(m+1)取buf[1]的值,这两个值分别是 //字符串"hellow"和"world"的地址 //**m则是取"hellow"第一个元素的值。...

2022-04-11 16:35:29 897

原创 C++虚指针和虚表

C++虚指针和虚表类中有虚函数,编译器就会为该类对象分配一个虚拟指针,虚拟指针指向一个全局(该类所拥有)的虚函数表。vptr 指向 vtable,vtable中保存着虚函数的地址。#include <stdio.h>#include <iostream>#include <cstring>using namespace std;using func = void (*)();class base{public: virtual void f

2022-04-11 10:54:57 1068

原创 Rtthread kservice中的系列函数

Rtthread kservice中的系列函数/* global errno in RT-Thread */static volatile int __rt_errno;/* * This function will get errno * * @return errno *///errno获取函数rt_err_t rt_get_errno(void){ rt_thread_t tid; if (rt_interrupt_get_nest() != 0) {

2022-03-24 17:31:11 447

原创 Rtthread Timer管理

Rtthread Timer 模块/* hard timer list */static rt_list_t rt_timer_list[RT_TIMER_SKIP_LIST_LEVEL];/** * timer structure */struct rt_timer{ struct rt_object parent; /**< object 头部分 */ rt_list_t row[RT_TIMER

2022-02-26 11:12:36 458

原创 Rtthread线程源码分析

Rtthread线程源码分析/** * This function will create a thread object and allocate thread object memory * and stack. * * @param name the name of thread, which shall be unique * @param entry the entry function of thread * @param parameter the parameter of th

2022-02-16 14:38:20 1022

原创 Rtthread object管理

Rtthread object管理Rtthread 内核对象都使用rt_object来统一管理,rt_object对象拥有name, type, flag和list四个成员变量,通过list链表统一挂载到rt_object_information中管理。/** * Base structure of Kernel object */struct rt_object{ char name[RT_NAME_MAX]; /**<

2022-02-07 13:54:15 353

原创 Rtthread 内存管理

#define HEAP_MAGIC 0x1ea0struct heap_mem{ /* magic and used flag */ rt_uint16_t magic; rt_uint16_t used;#ifdef ARCH_CPU_64BIT rt_uint32_t resv;#endif rt_size_t next, prev;#ifdef RT_USING_MEMTRACE#ifdef ARCH_CPU_64BIT rt_uint

2022-01-27 16:42:10 1331

原创 STM32 Rtthread启动流程基于GNU交叉编译

STM32 Rtthread启动流程基于GNU交叉编译Rtthread并不是直接从main函数开始启动的,而是从componets.c中通过entry函数启动的://需要在board.c中开启这个宏RT_USING_USER_MAIN//我使用的时GNU编译器,所以入口函数在这,可以在ld命令中指定entry为入口地址,//也可以在startup_stm32f411xe.s中指定入口地址为entry/* Add -eentry to arm-none-eabi-gcc argument */i

2022-01-02 11:50:19 442

原创 Rtthread INIT_EXPORT宏的使用

Rtthread INIT_EXPORT宏的使用在rtthread源码中可以通过INIT_EXPORT宏实现函数自动被调用,其具体实现如下:/* initialization export */#ifdef RT_USING_COMPONENTS_INITtypedef int (*init_fn_t)(void); //申明函数指针类型#ifdef _MSC_VER /* we do not support MS VC++ compiler */ #define INIT_EXPORT(

2022-01-02 00:32:33 2175 1

原创 STM32 RTTHREAD线程编写知识

STM32 RTTHREAD线程编写知识知识储备:CORTEX-M3/M4寄存器组1.R0-R12寄存器R0〜R12为通用目的寄存器,前8个(R0-R7)也被称作低寄存器。由于指令中 可用的空间有限,许多16位指令只能访问低寄存器。高寄存器(R8-R12)则可以用于32位 指令和几个16位指令,如MOV(move)。R0-R12的初始值是未定义的。2.R13,栈指针(SP)R13为栈指针,可通过PUSH和POP操作实现栈存储的访问。物理上存在两个栈指针: 主栈指针(MSP,有些ARM文献也

2021-12-18 14:25:07 1351

原创 STM32外部中断/事件控制器 (EXTI)

STM32外部中断/事件控制器 (EXTI)关于STM32中断与事件的区别,请参考大牛写的博客:STM32中中断与事件的区别外部中断/事件控制器包含多达 23 个用于产生事件/中断请求的边沿检测器。每根输入线都可 单独进行配置,以选择类型(中断或事件)和相应的触发事件(上升沿触发、下降沿触发或边沿触发)。每根输入线还可单独屏蔽。挂起寄存器用于保持中断请求的状态线。功能说明要产生中断,必须先配置好并使能中断线。根据需要的边沿检测设置 2 个触发寄存器,同时在 中断屏蔽寄存器的相应位写“1”使能

2021-12-16 21:51:28 4513

原创 STM32 NVIC与中断控制

STM32 NVIC与中断控制学习NVIC全称向量中断控制器,NVIC 共支持 1 至 240 个外部中断输入(通常外部中断写作 IRQs)。NVIC 还支持一个“永垂不朽”的不可屏蔽中断(NMI)输入。NVIC 的访问地址是 0xE000_E000。所有 NVIC 的中断控制/状态寄存器都只能在特权级下访问。不过有一个例外——软件触发中断寄存器可以在用户级下访问以产生软件中断。所有的中断控制/状态寄存器均可按字/半字/字节的方式访问。此外,有几个中断屏蔽寄存器也与中断控制密切相关,它们是第三章中

2021-12-16 16:42:10 1526

原创 STM32 Systick定时器

STM32 systick定时器学习以下摘自《Cortex-M3权威指南》SysTick定时器SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。在以前,大多操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基。例如,为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序

2021-12-16 14:14:56 516

原创 STM32 位带操作

STM32位带操作

2021-12-15 22:07:01 3426

原创 STM32 arm-none-eabi-gcc 交叉编译重定向printf

STM32 arm-none-eabi-gcc 交叉编译重定向printf在linux下使用arm-none-eabi-gcc交叉编译stm32,与Keil下不同,linux下printf底层实现已经改成_write了,所以需要重写_write函数:int _write (int fd, char *pBuffer, int size) { for (int i = 0; i < size; i++) { while((USART1->SR

2021-12-15 14:57:20 1448

原创 C++ SGI STL LIST实现

C++ STL list源码分析STL list node:STL list :一、pandas是什么?二、使用步骤1.引入库2.读入数据总结STL list node:// 双向链表struct _List_node_base { _List_node_base* _M_next; _List_node_base* _M_prev;};// list 节点template <class _Tp>struct _List_node : public _List_node_b

2021-12-15 14:05:36 1026

原创 STM32 RCC详解

STM32 RCC

2021-12-13 21:35:18 4791 2

原创 GCC STM32链接文件和启动文件分析

STM32链接文件和启动文件分析SOC: STM32F401CCU6 256K flash 64k ramMem map:链接文件部分:. = ALIGN(4);是指4字节对齐.,小数点表示当前的地址位置,例如__MALLOC_SYMBOLS = .;的意思是`__MALLOC_SYMBOLS 的地址就是.malloc段的地址一般的程序中包含常见的几个段:text(存放程序)rodata(存放被初始化的数据)data(表示初始化不为0的变量)bss(表示初始化值为默认的全局变量)te

2021-12-13 10:15:37 3504

原创 va_list、va_start和va_end实现

@[TOC](va_list、va_start和va_end使用)一、va_list va_start va_end介绍三个宏在GCC中实现:typedef char * va_list;#define _INTSIZEOF(n) \((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) )#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )#define va_arg

2021-11-18 20:57:11 538

原创 C++ SGI STL iterator和traits源码分析

C++ STL iterator和traits源码分析iterator:traits:iterator:iterator_category 五种迭代器类型标记这里共有5种迭代器标记(代表五种类型的迭代器,比如vector就是forward类型的,list是bidirectorational类型的) struct input_iterator_tag {}; struct output_iterator_tag {}; struct forward_iterator_tag : p

2021-11-15 15:04:06 147

STM32F411CEU6.zip

STM32F4xx linux arm-none-eabi-gcc标准库模板 linux下使用arm-none-eabi-gcc编译,使用cmake管理 mkdir build cd build cmake .. make -j32

2021-12-15

空空如也

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

TA关注的人

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