推荐阅读最新更新时间:2024-03-16 16:25
STM32外部中断方式按键操作(STM32_09)
一、中断配置的步骤 1、使能中断 2、设置中断优先级分组 void NVIC_PriorityGroupConfig(uint32_tNVIC_PriorityGroup); #define NVIC_PriorityGroup_0 ((uint32_t)0x700) /*0位抢占,4位响应 */ #define NVIC_PriorityGroup_1 ((uint32_t)0x600) /*1位抢占,3位响应 */ #define NVIC_PriorityGroup_2 ((uint32_t)0x500) /*2位抢占,2位响应 */ #define NVIC_Priori
[单片机]
STM32-Flash的原理与使用(模拟EEPRM)
1、什么是Flash FLASH闪存是属于内存器件的一种,其存储特性相当于硬盘,下图就能看出Flash扇区就等于电脑硬盘分区,但是对Flash进行写数据时必须先进行扇区擦除,然后才能再写入,否则会写入失败,MCU的Flash大小可参考数据手册 2、闪存模块存储器组织 此为STM32F407ZGT6的FLASH大小为1024K 不同容量的STM32F4,拥有的扇区数不一样,比如我们的STM32F407ZGT6,则拥有全部12个扇区。从上图可以看出主存储器的起始地址就是0X08000000, B0、B1都接GND的时候,就是从0X08000000开始运行代码的。 STM32F40x的闪存模块由:主存储器、系统存储器、OPT
[单片机]
STM32启动模式及API
简介:我们玩ARM9,一般都是在内存里调试程序,速度飞快。STM32下也可以这样,虽说现在的flash寿命已经很长了,但flash中调试烧录程序还是一个很慢的过程,有时候程序上一个小小的改动要花上几倍的时间下载代码,这确实是不能忍受的。 我们也可以在开发STM32时,在内存中调试程序。 {STM32这颗Cortex-M3控制器,与其他许多ARM一样,提供了BOOT0和BOOT1两个管脚用于启动选择。 BOOT1=x BOOT0=0 从用户闪存启动,这是正常的工作模式。 BOOT1=0 BOOT0=1 从系统存储器启动,这种模式启动的程序功能由厂家设置。(用于串口ISP) BOOT1=1 BOOT0=1 从内置SRAM启
[单片机]
STM32中uCOS的任务切换讨论
在STM32平台下,移植了uCOS V291的核。然后在网上下载了一个移植文件: os_cpu_c.c os_cpu_asm.asm 本人并没有非常详细地去看任务切换过程的具体实现。只是大致有了一个了解。 当在后台程序中调用OSCtxSw()或OSIntCtxSw()进行任务切换时,其操作都是触发一个软中断PendSV_Handler(),让软中断来进行切换任务栈。如下: OSCtxSw LDR R0, =NVIC_INT_CTRL LDR R1, =NVIC_PENDSVSET STR R1, BX LR OSIntCt
[单片机]
RyanMqtt移植指南
测试环境:stm32F401RCT6、RT-Thread版本: v4.1.0、RT-Thread Studio版本: 2.2.6、网络硬件使用ec800m移植at_socket使用sal框架。 1、移植介绍 RyanMqtt 库希望应用程序为以下接口提供实现: system 接口 RyanMqtt 需要 RTOS 支持,必须实现如下接口才可以保证 mqtt 客户端的正常运行 network 接口 RyanMqtt 依赖于底层传输接口 API,必须实现该接口 API 才能在网络上发送和接收数据包 MQTT 协议要求基础传输层能够提供有序的、可靠的、双向传输(从客户端到服务端 和从服务端到客户端)的字节流 time 接口
[单片机]
STM32之BKP例程
#include stm32f10x.h /* RCC时钟配置 */ void RCC_config(void) { ErrorStatus HSEStartUpStatus; /* RCC寄存器设置为默认配置 */ RCC_DeInit(); /* 打开外部高速时钟 */ RCC_HSEConfig(RCC_HSE_ON); /* 等待外部高速时钟稳定 */ HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus == SUCCESS) { /* 设置HCLK = SYSCLK */ RCC_HCLKConfig(RCC_SY
[单片机]
stm32串口通信流程图
1.写在前面 首先,你要知道STM32启动文件中启动流程,你就需要掌握一点汇编基础知识。 汇编语言属于机器语言,或者说低级语言,C语言属于高级语言,所以,汇编和C语言在语法上差异很大。 如果你学底层开发,汇编的一些基础知识需要掌握。不需要精通,但需要看懂常见的汇编代码。 2.说明 STM32的启动文件与编译器有关,不同编译器,它的启动文件不同。 虽然启动文件(汇编)代码各有不同,但它们原理类似,都属于汇编程序。 我们拿基于MDK-ARM的启动文件来举例,说一下要点内容。 3.分配堆栈 在基于MDK的启动文件开始,有一段汇编代码是分配堆栈大小的。 这里重点知道堆栈数值大小就行。还有一段AREA(区域),表示分配一段堆栈数
[单片机]
关于STM32 利用IO口模拟串口实现数据通信
网上有好多关于利用IO口来实现串口数据收发的实例,这种方法的实质都是可以应用于任何一款微处理器上,而不仅仅局限于stm32。有相关的源代码链接参考: https://github.com/TonyIOT/SoftWareSerial 当然,如果成本要求不高,可以利用串口扩展芯片是最方便的,如CH438,WK系列芯片等。 IO口模拟串口的一些基本原理,阐述如下: STM32单片机一般少则3个串口,多则5个,而项目还偏偏5个硬件串口还是不够用.板子上有几个预留IO口,可以用来模拟串口. 模拟串口一般都选9600,速度最快试了也才19200,所以限制还是较多的,一般不得以情况下才会用到. IO口模拟串口的思路也比较简单,
[单片机]