- 博客(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例程-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
转载 处理器字节大小端存储方式、网络字节顺序(总结)
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关注的人