![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
stm32
文章平均质量分 63
tony++
这个作者很懒,什么都没留下…
展开
-
Stm32H7XX GCC下分散加载实现
stm32分散加载原创 2022-09-17 17:12:46 · 1377 阅读 · 2 评论 -
Stm32F4XX开启FPU浮点运算
stm32开启FPU原创 2022-08-26 10:23:05 · 2643 阅读 · 3 评论 -
Rtthread信号量/互斥量实现分析
rtthread 信号量与互斥量原创 2022-04-23 15:54:55 · 574 阅读 · 0 评论 -
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 · 1031 阅读 · 0 评论 -
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 · 356 阅读 · 0 评论 -
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 · 1342 阅读 · 0 评论 -
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 · 446 阅读 · 0 评论 -
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 · 2226 阅读 · 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 · 1359 阅读 · 0 评论 -
STM32外部中断/事件控制器 (EXTI)
STM32外部中断/事件控制器 (EXTI)关于STM32中断与事件的区别,请参考大牛写的博客:STM32中中断与事件的区别外部中断/事件控制器包含多达 23 个用于产生事件/中断请求的边沿检测器。每根输入线都可 单独进行配置,以选择类型(中断或事件)和相应的触发事件(上升沿触发、下降沿触发或边沿触发)。每根输入线还可单独屏蔽。挂起寄存器用于保持中断请求的状态线。功能说明要产生中断,必须先配置好并使能中断线。根据需要的边沿检测设置 2 个触发寄存器,同时在 中断屏蔽寄存器的相应位写“1”使能原创 2021-12-16 21:51:28 · 4525 阅读 · 0 评论 -
STM32 NVIC与中断控制
STM32 NVIC与中断控制学习NVIC全称向量中断控制器,NVIC 共支持 1 至 240 个外部中断输入(通常外部中断写作 IRQs)。NVIC 还支持一个“永垂不朽”的不可屏蔽中断(NMI)输入。NVIC 的访问地址是 0xE000_E000。所有 NVIC 的中断控制/状态寄存器都只能在特权级下访问。不过有一个例外——软件触发中断寄存器可以在用户级下访问以产生软件中断。所有的中断控制/状态寄存器均可按字/半字/字节的方式访问。此外,有几个中断屏蔽寄存器也与中断控制密切相关,它们是第三章中原创 2021-12-16 16:42:10 · 1550 阅读 · 0 评论 -
STM32 Systick定时器
STM32 systick定时器学习以下摘自《Cortex-M3权威指南》SysTick定时器SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。在以前,大多操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基。例如,为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序原创 2021-12-16 14:14:56 · 522 阅读 · 0 评论 -
STM32 位带操作
STM32位带操作原创 2021-12-15 22:07:01 · 3448 阅读 · 0 评论 -
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 · 1460 阅读 · 0 评论 -
STM32 RCC详解
STM32 RCC原创 2021-12-13 21:35:18 · 4811 阅读 · 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 · 3550 阅读 · 0 评论