推荐阅读最新更新时间:2024-03-16 15:13
STM32单片机中FLASH空间的分配之bootloader
根据程序运行流程: 正常的程序启动流程:从FLASH启动时,首先从闪存的物理地址入口0x08000000进入,然后是复位中断跳转到复位中断服务程序;复位中断服务程序执行完成后,再跳转到main函数入口,main函数一般为死循环;当外部中断发生时,跳转到中断向量查找表,通过查找表找到对应的中断服务程序地址,跳转到对应的中断服务程序;中断服务程序结束后再次跳转到main函数,这样不断的循环,这是我们的应用程序段; 当需要进行系统升级的时候,则需要在这个过程中添加一个bootloader程序段; 那么bootloader程序段存在什么位置呢? 一般是低地址区域存放bootloader程序段,紧接着的高地址区域存放应用程序段; 那么b
[单片机]
如何实现独立片选一主多从
之前用STM32的SPI需要控制很多外部芯片,可是一个SPI的外设只有一个片选,要实现独立片选一主多从,怎么实现呢? SPI总线拓扑 一般地,SPI总线按照下图方式进行连接,一主多从。 如上图: 每个从设备都有独立的片选引脚,主机同一时间段内,与一个从设备进行通信,也即选中一个从设备。 MOSI/MISO/SCLK并联在一起 MISO须是三态门,当从设备未选中时,该脚须设置为高阻态,而不能是输出态,否则会影响总线 ! 对于MOSI/SCLK,虽然并联在一起,但是由于仅一个输出,多输入。 但是你看STM32的SPI外设,一个SPI仅有一个NSS信号,以STM32F407的SPI2为例: 那么要实现前面说的一主多从,
[单片机]
STM32中NVIC_SystemReset()函数的作用?什么时候用?
STM32软件复位有两种方式 (1)方式一:NVIC_SystemReset()函数用来复位STM32. 注意1:从SYSRESETREQ 被置为有效,到复位发生器执行复位命令,往往会有一个延时。在此延时期间,处理器仍然可以响应中断请求。但我们的本意往往是要让此次执行到此为止,不要再做任何其它事情了。所以,最好在发出复位请求前,先把FAULTMASK置位。需要加上这句:__set_FAULTMASK(1);意思是关闭所有中断的意思,目的是在执行NVIC_SystemReset()复位函数过程中不被中断所打断。两个函数执行后系统复位重新执行代码,包括之前所配置好的外设寄存器也都回到复位状态。如下: __set_FAULTMASK
[单片机]
AVR单片机频率计设计 频率输入源STM32口
//---------------------STM32 3.3V转5V输出电路------------------------ 完整的程序源码下载: http://www.51hei.com/f/avrplj.rar //---------------------AVR代码----------------------- //芯片用ATMEG16 #include iom16.h #define uchar unsigned char #define uint unsigned int __flash uchar seg ={0x3f,0x06,0x5b,0x4f,0x66,0
[单片机]
基于STM32的危险品运输系统
一.系统设计 本次设计的是基于STM32F103C8T6单片机设计的一款 危险品运输,系统内有DHT11采集车内温湿度,气压传感器采集气压,adxl345计数模块采集震动次数 , lcd1602显示温湿度,气压值,震动次数 ,同时还有ESP8266将数据传输到one,在one端可以显示,温湿度,气压值,震动次数。 图1 系统框图 二.硬件设计 系统内的主要电路有单片机最小系统电路,气压检测电路、温湿度检测电路、震动检测电路、显示电路、无线通信电路、电源电路等。 图2 硬件电路 三.软件设计 系统的软件逻辑清晰,首先先进行一次系统初始化,此时就开始进行温湿度检测和压力检测以及震动计数,将数据现在显示屏上进行显示,再将数据上传
[单片机]
STM32定时器的预装寄存器以及影子寄存器话题
经常有人问起预装寄存器和影子寄存器的话题,其实STM32相关系列的手册里有介绍,有文档做介绍,这里借花献佛地一起分享下。 在谈预装寄存器及影子寄存器的差别前,不妨先对STM32定时器的时基单元做个基本了解。STM32各系列的定时器结构和框架基本是一样的,时基单元也一样。 下面时基单元是以STM32F3系列为参考。 时基单元中的TIMx_PSC、 TIM_ARR两个寄存器加上捕捉比较模块中TIMX_CCR寄存器,它们都可以动态修改。不过他们的修改和生效可能不在同一个时刻,这里便引入了预装寄存器及影子寄存器的概念。要记住一点,真正在TIMER模块中起作用的是影子寄存器。 1、用户程序对TIMx_PSC寄存器值的修
[单片机]
stm32的IO模式具体意义
Ⅰ、写在前面 在开发STM32的时候,都需要对IO的模式进行配置(GPIO_InitStructure. GPIO_Mode = xxx)。但是,你们都知道各种模式的具体意义吗? 有的人问:IO口输出可以上拉吗? 开漏输出是干什么用的? 其实这些问题并不难,只要你了解到每一种模式的真正意思,相信这些问题都不会难道你。本文的内容比较基础,也比较实用,希望对你有所帮助。 关于本文的详细内容请看下面章节 Ⅱ、模式说明 STM32芯片的IO有8中模式: (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入 (3)GPIO_Mode_IPD 下拉输入 (4)GPIO_Mode_IPU 上
[单片机]
stm32编译出问题解决
.FWlibincstm32f10x_conf.h(33): warning: #14-D: extra text after expected end of preprocessing directive 额外的文本在在预处理命令后面出现 #include stm32f10x_dma.h */ 出问题的地方就是这个 */ 仿照原子自己建立工程的时候出现的问题修改: 问题及修改: 1)..SYSTEMdelaydelay.c(27): error: #20: identifier SysTick_CLKSource_HCLK_Div8 is undefined 解决方法:在delay.c中添加
[单片机]