第一次接触了memset() 函数。 感觉的确是一个能够高效的实现对一个array 进行一次性初始化的fancy way。 下面给出介绍:memset() 函数定义在头文件<<cstring>>中, prototype 如下: void * memset ( void * ptr, int ch, size_t num );函数的作用是: fill the first nu
stm32f10x_con.h 配置文件:加载哪个外设、使能assert 对参数进行检查,如果使能了assert 需要在main文件中添加 _assert_faild 函数。 使能assert会增大编译出执行文件的大小,调试完后可以将assert 屏蔽。stm32f10x.h头文件中包含了stm32f10x_conf.h 。 stm3
在各类通信中,常使用memcpy将接收到的字节数组(如:unsigned char buffer[100]),直接复制到结构体当中,无须解码,直接使用结构体中的变量就完事了。但,使用MDK5作为IDE, 对STM32芯片进行编程完成类似操作时,确并不如意。相关代码如下:// 如果有一些似曾相识的感觉,那应该是上一篇讲STM32用中断实现串口通信的文章
#include "usermain.h"
#
转载
2024-05-07 22:01:01
1109阅读
前言在中国,熟悉单片机的人士大多会听说过STM32。这是意法半导体(STMicroelectronics, 简称ST)的32位微控制器(MCU)家族,基于ARMCortex-M内核。2007年,STM32F1诞生。这是业界首款搭载ARM Cortex-M3内核的32位MCU,采用180nm闪存工艺,配有128KB闪存和20KB RAM,运行主频为72MHz,在当时属于相当高的配置。随后的10年内,
memest原型 (please type "man memset" in your shell) void *memset(void *s, int c, size_t n); memset:作用是在一段内存块中填充某个给定
已经简单的学习了GPIO,NVIC,EXTI,SYSTICK这几个方面的大概;通过点亮LED灯,通过按键控制灯的亮灭,按键中断,LED延时等等,虽说只是些小程序,但这些小程序其实是依靠了ST和ARM成熟的技术支持才得以实现出现的,下面就看看他们具体做了什么?ARM处理器相关函数:启动文件:初始化堆栈指针初始化程序计数器(Reset_handler)初始化中断向量表配置系统时钟调用C库函数_main
我们要想深刻理解某个东西,充分利用某个东西,甚至对其作出预言,就需要为它建立一个模型。本文以STM32F429执行速度为切入点,讲了两个方面:1、STM32F429执行速度模型2、建立模型的过程和意义您仔细读完本文的收获是:1、一个完整的STM32执行速度模型,可指导软件开发。2、理解建模过程,提升解决问题的能力。影响指令执行速度的因素很多,包括核心频率,存储器频率,外设频率,电压,代码位置,指令
1 STM32 中断优先级概念STM32(coetex-M3)有两个中断优先级概念,抢占式优先级和响应式优先级,也把响应式优先级称作“亚优先级”或“副优先级”,每个中断源都需要被指定属于哪一种优先级。1、何为抢占式优先级(pre-emption priority)断嵌套。2、何为响应式优先级 在抢占式优先级相同的情况下,高相应的优先级首先被相应。 在抢占式优先级相同的情况下,如
转载
2024-06-18 20:27:27
419阅读
1、按键实验:
GPIO_ReadInputDataBit来获取位状态,高电平返回1.低电平返回0;
2、GPIO——位带操作:
3、启动文件详解:
系统启动流程:
在离开复位状态后,CM3做的第一件事就是读取下列两个32位整数的值。
1、从地址0x00000000 处取出MSP的初始值。
2、从地址0x00000004 处取出PC
转载
2023-11-24 23:06:25
82阅读
STM32的ADC模块采用了逐次逼近型,速度快,最高可达几十MHz工作频率。一般,为了获得较为准确的采样结果,ADC采样速率建议6分频,不要超过14MHz。通常情况下,芯片包括3个12bit的ADC模块,每个模块具有1个ADC控制器,ADC1和ADC2均有16个外部采样通道和2个内部采样通道,ADC3有8个外部通道和5个内部采样通道。3个模块复用16个外部采样输入引脚,也就是说同时最多支持16路外
转载
2024-09-02 09:30:42
322阅读
既然我们要使用RTC就要先对它有个大致的了解,知己知彼才能百战不殆嘛!STM32内部RTC功能非常实用,它的供电和时钟是独立于内核的,可以说是STM32内部独立的外设模块,有加上RTC内部寄存器不受系统复位掉电的影响,我们可以才用外部电池供电和32768表振晶体来实现真正RTC(实时时钟)功能。的这里引用手册里一段概述“RTC由两个主要部分组成。第一部分(APB1接口)用来和 APB1
转载
2024-08-23 13:33:33
207阅读
原文地址1 异常类型CM3内核支持256个中断,其中 16个 内核中断和240个外部中断,并具有256级可编程中断设置。STM32并没有
原创
2021-01-17 11:19:51
1571阅读
GPIOx_CRL(x=A~E) 地址偏移:端口配置的初始地址加上偏移地址就是该特殊寄存器的地址 GPIO通用输入输出8种工作模式 1.浮空输入模式: (1)当GPIOx_CRL或GPIOx_CRH寄存器的CNF[1:0]位设置为01,并且MODE[1:0]位设置为00时 (2)STM32复位之后默 ...
转载
2021-04-08 13:51:00
891阅读
2评论
本文讲述的是如何从零开始,使用keil建立一个简单的STM32的工程,并闪烁LED灯,给小白看。第零步,当然首先你得有一个STM32的板子,其IO口上接了一个LED。。。第一步,建立一个文件夹0.0第二步,打开keil,建立工程在弹出来的对话框中选择你所用的STM32的芯片。在接下来弹出来的对话框中选择是,这样keil就帮我们建立好了启动文件。 第三步,新建一个main.c文件,并添加到
转载
2023-06-19 15:27:24
969阅读
总线矩阵 上图为stm32f4的总线矩阵,其中主控总线有8条,被控总线有7条,主设备和从设备通过各自的总线两两相交连接,图中两条总线相交且为圆圈的地方,表示这两条总线对应的主设备可以访问从设备,如I总线(指令总线),只有跟 M0、M2和M6这三根被控总线交叉的时候才有圆圈,就表示I总线只能跟这三根被控总线通信,这样就可以知道stm32f4的启动有三种分别是FLASH、内部SRAM、外部存储FSM
转载
2023-07-12 23:35:55
475阅读
一、SysTick基础简介:SysTick系统定时器是 CM3 内核中的一个外设,内嵌在 NVIC 中。系统定时器是一个 24bit 的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般我们设置系统时钟 SYSCLK等于 72M。当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生一次中断,以此循环往复。因为 SysTick 是属于 CM3 内核的外设,所以所有基于 CM3
转载
2024-05-16 14:20:13
528阅读
stm32在freertos系统下使用串口DMA接收方式对接freemodbus-rtu协议栈 文章目录stm32在freertos系统下使用串口DMA接收方式对接freemodbus-rtu协议栈前言码农工程师,人狠话不多,大家多看图和代码!!!一、准备工作cubemx配置dma初始化的一个注意点二、拆解freemodbus1.porttimer.c文件不再使用(不使用定时器判断接收完成),接口
转载
2024-03-17 00:43:12
1171阅读
点赞
1评论
韦东山 数码相框 项目学习(三)freetype的移植要把freetype移植到STM32MP157上,我们主要完成四步源码下载解压配置、编译对应文件复制到对应目录一、源码下载解压源码的下载可以进入去https://freetype.org/这个网址进行下载,本次移植我们使用的是2.4.10版本,然后将下载下来的压缩包上传到服务器。然后执行tar -jxvf freetype-2.4.10.tar
转载
2024-04-15 15:33:26
616阅读
简介IAP(In Application Programming)即在应用编程, IAP 是用户自己的程序在运行过程中对User Flash 的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。通常实现 IAP 功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序不执行正常的功能操作,而只是通过某种通信方式(
转载
2024-05-03 13:40:25
176阅读
在嵌入式设备中,常涉及到低功耗下的串口通信,本文以STM32L4作为硬件平台,讲解3种低功耗下的串口通信,希望对做低功耗的嵌入式开发者有所启发或帮助。笔者才疏学浅,难免有错误或遗漏之处,望读者能不吝指正。下文所涉及的低功耗模式都是指STM32的停机模式,在该模式下PLL停止工作,仅LSI和HSI继续运行(进休眠前已经打开的话),所有IO状态、内部RAM数据保持不变,所有外部IO中断、内部RTC定时
转载
2024-04-10 10:25:36
477阅读