自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 STM32 HAL库之配置数据FLASH存储

本文以STM32F103VET6为例,介绍其内部512KByte的flash存储器。该处理器flash单元主要包括三个部分:存储单元、信息块部分、存储器相关控制寄存器。存储单元以page的形式组织,每页2Kbyte,共256页。信息块部分包括system memory(2Kbyte)和option byte(16Byte),system memory单元主要用于存储ST公司固化的bootloader,实现USART1串口更新用户程序。STM32F103VET6内部flash地址分配如下表所示。

2024-12-21 10:18:09 1621 1

原创 STM32 HAL库之串口接收不定长字符

串口发送数据可直接采用查询和DMA的方式发送,尽量不采用中断方式(包括DMA中断方式)。串口接收数据具有随机性,一般采用中断方式和DMA中断接收,前者一般单字节触发接收,后者一般定长字符触发DMA中断接收。在项目开发过程中,经常会使用MCU的串口与外界进行通信,例如两个单片机之间TTL电平型串口通信,单片机与成熟电路模块之间的串口通信等等.... 如何高效的使用串口是开发人员必须关注的问题。DMA的方式主要采用以下两个函数。但在使用的过程中,可关闭DMA中断,直接采用DMA接收和放送,降低了CPU负载。

2024-12-19 20:00:51 844

原创 STM32 HAL库之 RTOS 认识及任务介绍

开启MCU内部定时器,采用定时中断的方式,中断溢出1ms触发中断。在中断函数中累计并判断时间,T=500ms StateMachine = 0x0001,T=1s StateMachine = 0x0002,T=10s StateMachine = 0x0004。从上面代码中可以看出,我们只需要创建三个任务分别处理设计需求即可。深入学习RTOS的调度机制以后,我们会知道RTOS的这种方式其实也是采用中断调度的方式进行控制的,只不过这些工作都是由系统已经为我们封装好了。

2024-12-16 11:15:05 243

原创 STM32之HAL例程-FreeRTOS任务调度流程

sysytick作为系统时钟基准,每1ms触发一次中断。分析中断程序,可知系统对各个状态链表进行查询,若需要进行任务切换,就使能PendSV位。在函数xPortStartScheduler中设置PendSV和Systick中断为最低优先级中断,中断编号为15。systick定时器全局监测变量xTickCount。任务的切换都是在PendSV中断中进行。

2024-12-16 11:13:42 358

原创 STM32 HAL库之Tiny Program 1 - 数据监测存储系统

每间隔一段时间对STM32 MCU内部工作电压和温度进行采集监测,并存储到MicroSD卡内。

2024-12-14 10:56:31 402

原创 STM32 HAL库之SDIO例程 Micro SD卡 - 2

SD卡数据的HAL读取

2024-12-12 21:26:33 329

原创 STM32 HAL库之SDIO例程 Micro SD卡 - 1

SD卡基本概念

2024-12-12 20:26:26 660

原创 STM32之HAL例程-FreeRTOS底层开关中断以及临界区汇总

/* Convert from CMSIS type osPriority to FreeRTOS priority number */static unsigned portBASE_TYPE makeFreeRtosPriority (osPriority priority){ unsigned portBASE_TYPE fpriority = tskIDLE_PRIORITY; if (priority != osPriorityError) { fpriority +=.

2022-03-15 21:49:34 1054

原创 STM32之HAL例程分析-串口输出函数printf打印调试信息

参考ST官方历程进行程序修改。1、主函数如下代码所示。HAL例程中使用句柄UartHandleTypedef 完成对串口通用参数的初始化,串口的底层硬件初始化则在函数HAK_UART_Init中的HAL_UART_MspInit函数中实现。int main(void){ HAL_Init(); SystemClock_Config(); BSP_LED_Init(LED3); BSP_LED_Init(LED4); /*##-1- Configure the UART

2022-02-27 09:16:52 1929

原创 STM32之HAL例程分析-systicker应用

STM32 MCU内部SYSTICK定时器介绍。

2022-02-26 21:25:52 5956

原创 lwip之udp

lwip udp

2017-02-18 16:44:53 2190

原创 lwip之IP(二)

lwip ip协议

2017-02-17 21:44:59 2276 1

原创 lwip之IP(一)

lwip ip

2017-02-16 10:38:28 1942

原创 lwip之地址解析协议ARP

ARP

2017-02-15 11:00:12 2408

原创 lwip之接口netif

lwip之netif

2017-02-15 10:52:03 4034

原创 lwip之数据包pbuf

lwip之数据包pbuf

2017-02-14 16:49:03 2473

原创 lwip之内存管理

lwip 内存管理

2017-02-14 15:31:09 2350

原创 认识uCOS-II(三)

认识ucos-ii

2017-02-05 15:54:43 512

原创 认识uCOS-II(二)

认识uCOS-II

2017-01-30 08:59:39 679

转载 systick定时器

SysTick定时器

2017-01-23 15:55:02 943

原创 认识uCOS-II(一)

认识uCOS-II

2017-01-23 08:51:39 1242

原创 一步步移植uCOS-II and LwIP (四)

一步步移植uCOS-II and LwIP

2017-01-22 20:42:19 1540

原创 一步步移植uCOS-II and LwIP (三)

一步步移植uCOS-II and LwIP

2017-01-22 16:12:33 2148

原创 一步步移植uCOS-II and LwIP (二)

一步步移植uCOS-II and LwIP

2017-01-22 11:39:34 3214

原创 一步步移植uCOS-II and LwIP (一)

一步步移植lwIP and uCOS-II

2017-01-22 05:54:14 8034

翻译 LWIP中各个结构体汇总

LWIP中各个结构体汇总

2017-01-04 14:02:00 1390

转载 处理器字节大小端存储方式、网络字节顺序(总结)

1、为什么会有大小端模式之分呢?        这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为 8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器),另外,对于位数大于 8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的

2017-01-04 13:05:43 1837

转载 typedef用法(转载记录)

typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。typedef的使用方法

2017-01-04 09:38:50 279

空空如也

空空如也

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

TA关注的人

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