推荐阅读最新更新时间:2024-11-06 16:23
【STM32】通用定时器的输入捕获(实例:输入捕获)
STM32F1xx官方资料: 《STM32中文参考手册V10》-第14章 通用定时器 通用定时器输入捕获概述 输入捕获的工作原理 在通用定时器框图中,主要涉及到最顶上的一部分(计数时钟的选择)、中间部分(时基单元)、左下部分(输入捕获)这三个部分。这里主要讲解一下左下部分(输入捕获),其他两个部分可以参考文章:【STM32】通用定时器的基本原理(实例:定时器中断)。 输入捕获模式可以用来测量脉冲宽度或者测量频率。STM32的定时器,除了TIM6、TIM7,其他的定时器都有输入捕获的功能。下面以一个简单的脉冲输入为例,简单地讲述一下输入捕获用于测量脉冲宽度的工作原理: 先设置输入捕获为上升沿检测,记录
[单片机]
42.485通信实验
一。485接口原理 二。485电路芯片SP3485 一般2,3脚连在一起,当2,3脚为低电平时,使能RO端,当2,3脚为高电平时,使能DI端。 三。电路 采用UART2接口,PA2为USART2_TX,PA3为USART2_RX PA2接SP3485的4脚DI端 PA3接SP3485的1脚RO端 四。程序 串口2初始化 //初始化IO 串口2 //pclk1:PCLK1时钟频率(Mhz) //bound:波特率 void RS485_Init(u32 bound) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART
[单片机]
stm32固件库在stm3210e-eval开发板上的移植
首先建立工程,我习惯性在工程文件夹下建立以下几个文件夹,分别放不同的文件,以区别不同文件的不同作用,方便寻找和移植。如下: 在PROJECT文件夹下建立工程项目,启动keil,开始建立工程。 注意建立在PROJECT文件夹下。 随便起个名字,我起的名字是MDK,建立后,会提示你选择器件型号 我的器件如上图,所以选择。确定后会询问你是否加入启动文件。我们用stm32的固件库,所以不用mdk的,选择否。 下面配置工程的选项option,右键点Target会看到Options。 以下是各个选项卡的配置内容。
[单片机]
学习STM32单片机,要理解它的堆栈
学习STM32单片机的时候,总是能遇到 “堆栈” 这个概念。对于了解一点汇编编程的人,就可以知道,堆栈是内存中一段连续的存储区域,用来保存一些临时数据。堆栈操作由 PUSH、POP 两条指令来完成。而程序内存可以分为几个区:栈区(stack)、堆区(Heap)、全局区(static)、字符常量区、程序代码区。 栈,用于存放局部变量,局部数组等; 堆,用于malloc申请内存空间; 全局静态区,用于保存全局变量和静态变量; 字符常量区,用于保存字符串等; 代码区,用于保存程序的二进制代码。 程序编译之后,全局变量,静态变量已经分配好内存空间。在函数运行时,程序需要为局部变量分配栈空间,当中断来时,也需要将函数指针入栈,保护现
[单片机]
STM32中将常量存储在FLASH中(CONST关键字)
今天在写程序时,想把一个字符串常量存储在STM32的FLASH中,看了一会儿别人的例子程序,知道是用const这个关键字,但第一次没有成功。 前提:我用的是STM32F103ZE单片机, FLASH的存储范围为:0x08000000~0x0807ffff, RAM的存储范围:0x20000000~0x200007ff 失败例子: #include..... 。。。。 int main(void) { u8 const c = somen ; while(1); } 通过调试,查看c 数组的存储位置为0x200*****的位置,常量仍旧处在RAM中。 成功的例子: #include..... u
[单片机]
STM32高级定时器-PWM简单使用
高级定时器与通用定时器比较类似,下面是一个TIM1 的PWM 程序,TIM1是STM32唯一的高级定时器。共有4个通道有死区有互补。 先是配置IO脚: GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure);
[单片机]
STM32之GPIO_Mode
一、GPIO配置 (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 复用推挽输出 GPIO_Speed_10MHz 最高输出速率10MHz GPIO_Speed_2MHz 最高输出速率2MHz GPIO_Speed_50MHz 最高输出速率50MHz 1.1 I/O口的输出模式下,有3种输出速度可选(2M
[单片机]
stm32 can不稳定的解决方法
问题出现的背景 需要写一个新的电机的驱动,使用can通讯,驱动比较简单,很快就写好了。自己单独测试一个电机的时候没有问题,正反转测什么的都很正常。本以为事情会很顺利,但是在测两个电机的时候,却发现很严重的问题,经常左电机不装或者是右电机不转。 问题的解决步骤 发送: 3 个发送邮箱 发送报文的优先级特性可软件配置 记录发送 SOF 时刻的时间戳 接收: 3 级深度的2个接收 FIFO 14 个位宽可变的过滤器组 - 由整个 CAN 共享 标识符列表 FIFO 溢出处理方式可配置 记录接收 SOF 时刻的时间戳
[单片机]