推荐阅读最新更新时间:2024-03-16 15:36
STM32再学习――启动流程分析
我们写嵌入式程序,基本上采用C语言来编写,以main( )作为程序的入口。但实际上,mian()并不是最先要执行的,在这之前需要做一些基本的工作,如堆、栈的定义;main函数的复位连接等,这些工作就需要一个专门的启动程序来完成,由于需要做的工作内容不多,并且需要更直接的管理内存,一般采用汇编编写。 无论是STM32、ARM系列的单片机,还是简单的如51,PIC等,都以为上述原因,需要启动程序,只不过51,PIC等单片机的启动程序已经在相应的IDE编译、链接的时候隐含的编译了,故在写单片机程序的时候无需考虑。而STM32的启动有相应的启动文件,本文将采用KEIL MDK自带的启动文件STM32F10x.s进行分析。
[单片机]
STM32时钟初始化函数SystemInit()详解
花了一天的时间,总算是了解了SystemInit()函数实现了哪些功能,初学STM32,,现记录如下(有理解错误的地方还请大侠指出): 使用的是3.5的库,用的是STM32F107VC,开发环境RVMDK4.23 我已经定义了STM32F10X_CL,SYSCLK_FREQ_72MHz 函数调用顺序: startup_stm32f10x_cl.s(启动文件) → SystemInit() → SetSysClock () → SetSysClockTo72() 初始化时钟用到的RCC寄存器复位值: RCC_CR = 0x0000 xx83; RCC_CFGR = 0x0000 0000;RCC_CIR = 0x0000 0000;
[单片机]
STM32开发笔记88: SX1268驱动程序设计(天线控制)
单片机型号:STM32L053R8T6 本系列开发日志,将详述SX1268驱动程序的整个设计过程,本篇介绍天线控制的相关驱动程序。 上篇日志,提到在SX126xCheckDeviceReady函数中,如果芯片处于启动、硬复位、SLEEP模式、RX_DC模式,转换到STDBY模式时,需唤醒芯片,并将天线打开,程序如下: void CSX1268::SX126xCheckDeviceReady(void) { if((this- OperatingMode == MODE_SLEEP) || (this- OperatingMode == MODE_RX_DC)) { SX126xWakeup(); SX126
[单片机]
STM32在IAR的开发步骤
我也是刚开始接触stm32,前几天开始在IAR上做程序,发现很多网上写的建立程序步骤已不适于新版本的IAR,遇到不少问题,每个问题都得自己解决,最后在一些网友的帮助下,终于成功建立了第一个程序。 现在我写出STM32在IAR建立工程的步骤与大家分享,希望能帮大家解决一些问题。 我使用的是IAR5.3版本,固件库3.0版本(注意查看你的固件库是不是3.0,3.0以上的版本大致相同) 第一步,先建立一个文件夹,该文件夹将放所有与项目有关的文件,并将ST公司提供的固件函数库(Libraries)复制到该文件夹下,并在该文件中在建立一个文件,命名为project,再创立一个文本文档,命名为readme 如图所示 打开project,将
[单片机]
STM32的GPIO输入输出的几种模式的总结
最近在看数据手册的时候,发现在Cortex-M3里,对于GPIO的配置种类有8种之多: (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING浮空输入 (3)GPIO_Mode_IPD 下拉输入 (4)GPIO_Mode_IPU 上拉输入 (5)GPIO_Mode_Out_OD开漏输出 (6)GPIO_Mode_Out_PP推挽输出 (7)GPIO_Mode_AF_OD 复用开漏输出 (8)GPIO_Mode_AF_PP 复用推挽输出 对于刚入门的新手,我想这几个概念是必须得搞清楚的,平时接触的最多的也就是推挽输出、开漏输出、上拉输入这三种,但一直未曾对这些做过归纳。因此,在这里做一个总结:
[单片机]
在Linux下搭建STM32开发环境攻略
Linux发行版是64bit的Fedora19,方案选择为:Eclipse+CodeSourcery+OpenOCD+STLINKv2。 NO1.准备STM32的开发板,购买仿真器STLINKv2。 NO2.安装 CodeSourcery 如果是64bit机器,首先确认它能够运行32bit的软件。CodeSourcery可以在官网https://sourcery.mentor.com下载,名称为arm-2013.05-23-arm-none-eabi.bin,安装它。 CodeSourcery是编译好的二进制GCC程序包。 NO3.安装 OpenOCD 实际上,使用下面这个命令就可以: yum ins
[单片机]
STM32库函数void USART_SendData()的缺陷和解决方法
简介:本文主要谈到了STM32库函数void USART_SendData()存在的一些问题,针对这些问题提到了3个解决方案,一起来看看。 2.1问题及现象 使用USART_SendData()函数非连续发送单个字符是没有问题的;当连续发送字符时(两个字符间没有延时),就会发现发送缓冲区有溢出现象。若发送的数据量很小时,此时串口发送的只是最后一个字符,当发送数据量大时,就会导致发送的数据莫名其妙的丢失。 如: for(TxCounter = 0;TxCounter RxCounter; TxCounter++) USART_SendData(USART1, RxBuffer ); 2.2原因 此API
[单片机]
认识STM32的复位与电源管理
复位功能是一个非常重要的功能,大到PC,小到单片机,每一台计算机系统都有。在我小时候,去网吧的时候,但凡是电脑出现任何一点小问题,网管的第一回答一定是重启。重启和复位就是同一个意思。 发展到现在PC已经很稳定了,复位按钮慢慢的淡出我们的视野,但是在主板上我们依然可以找到复位电路的存在。单片机上的复位功能也有着类似的变化,在我们学单片机那个年代,需要在单片机的外部一个复位电路,从专用引脚上接一个电阻和电容组成的复位电路。如果没有这个电路,单片机就没法工作。现在的新款单片机都把复位功能内置到单片机中。如果是开发项目要手动复位,我们可以在复位引脚上接一个按键用来手动复位。 复位 复位功能的作用是让RAM 中的数据清空,让所有连接
[单片机]