推荐阅读最新更新时间:2024-03-16 14:35
STM32 CAN过滤器的学习心得
关于STM32的CAN的过滤器 STM32普通型芯片的CAN有14组过滤器组(互联型有28组过滤器组),用以对接收到的帧进行过滤。每组过滤器包括了2个可配置的32位寄存器:CAN_FxR0和CAN_FxR1。对于过滤器组,可以将其配置成屏蔽位模式,这样CAN_FxR0中保存的就是标识符匹配值,CAN_FxR1中保存的是屏蔽码,即CAN_FxR1中如果某一位为1,则CAN_FxR0中相应的位必须与收到的帧的标志符中的相应位吻合才能通过过滤器;CAN_FxR1中为0的位表示CAN_FxR0中的相应位可不必与收到的帧进行匹配。过滤器组还可以被配置成标识符列表模式,此时CAN_FxR0和CAN_FxR1中的都是要匹配的标识符,收到的帧的
[单片机]
STM32单片机PS2遥控小车
电路原理图如下: STM32单片机源程序如下: #include led.h #include delay.h #include sys.h #include usart.h #include pstwo.h /********************************************************* 功能:通过PS2控制小车运动 作者:大海电子 时间:180531 硬件平台:STM32F103C8T6 时钟:8Mhz 硬件引脚分配: //手柄接口 DI=PB12; DO=PB13 ; CS=PB14; CLK=PB15; //L298N 电机驱动控制引脚 IN1=PA0;
[单片机]
STM32基于时间片轮询机制
1. 基于时间片的轮询调度算法(仅局限单核CPU芯片): 利用定时器为每个任务函数设定执行时间间隔,保证使用频率高的函数多次被调用,提高单核芯片的资源利用率。如果只是简单地将A、B两个函数放在while中,那么在一定时间内这两个函数调用的次数是一致的,,这样就浪费了单核芯片的资源。 2. 例子: 函数A(100μs执行一次----使用频率高), 函数B(1000μs执行一次----使用频率低)。 那么在1ms 内 函数A 执行了10次,而函数B只执行1次 当然你要保证函数A在100μs内执行完毕、函数B在1000μs内执行完毕 如果超出时间的话系统会变得卡顿。有部分的函数可能没有别执行到。毕竟单核芯片只在很短时间内只做
[单片机]
STM32区别 SYSCLK和HCLK和PCLK1和PCLK2(system_stm32f10x.c中PCLK1才进行2分频设置)
system_stm32f10x.c system_stm32f10x.cstatic void SetSysClockTo72(void) { __IO uint32_t StartUpCounter = 0, HSEStatus = 0; /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ /* Enable HSE */ RCC- CR |= ((uint32_t)RCC_CR_HSEON); /* Wait till HSE is ready and if Time out is reach
[单片机]
STM32复习笔记(八)PWM输出和 输入捕获
一、STM32 PWM工作过程: STM32 PWM工作过程(通道1为例) CCR1:捕获比较(值)寄存器(x=1,2,3,4):设置比较值。 CCMR1: OC1M 位:对于PWM方式下,用于设置PWM模式1【110】或者PWM模式2【111】 CCER:CC1P位:输入/捕获1输出极性。0:高电平有效,1:低电平有效。 CCER:CC1E位:输入/捕获1输出使能。0:关闭,1:打开。 二、PWM模式1 & PWM模式2: 寄存器TIMx_CCMR1的OC1M 位来分析: void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_O
[单片机]
STM32 USB 问题汇总
以下是笔者将ST的Custom_HID例程修改为 自定义USB设备 例程时总结出来的,因为笔者也是刚刚学USB开发不久,某些方面理解错误在所难免,请各位大虾指正。 一、usb_desc.c文件 根据你程序使用的通信方式修改。usb_desc.h文件中定义要根据usb_desc.c文件中的数组的大小;ConfigDescriptor 下添加需要处理的端点;根据需要添加或删除报告描述符(主要用于HID)和CDC接口描述符(主要用于实现USB转串口)等。具体方法可以下载个 电脑圈圈 使用D12编写的例子。 二、Usb_conf.h文件: 1、修改需要处理那些中断 CNTR_CTRM 处理数据正确传输后控制,比如说响应主机 C
[单片机]
STM32单片机学习(7) 串口通信printf重定向
此处是为了在串口中断通信 中添加printf重定向功能 1、添加头文件 #include stdio.h 2、工程 Target -- 勾选 Use MicroLIB 3、重定义fputc函数 int fputc(int ch, FILE *f) { Uart1_PutChar((u8)ch); //此处为自定义函数,参见串口中断通信,请勿盲目 return (ch); } 经过上述配置后即可在项目中使用printf( Hello~ );等来发送字符串了 (printf( 格式化字符串 , 参量表 ) 与C语言使用一样)
[单片机]
基于Cortex-M3的STM32微控制器处理先进电机控制方法
变频器的问世和先进的 电机控制 方法让 三相无刷电机 (交流感应电机或永磁同步电机)曾经在调速应用领域取得巨大成功。这些高性能的电机驱动器过去主要用于工厂自动化系统和机器人。十年来,电子元器件的大幅降价使得这些电机驱动器能够进入对成本敏感的市场,例如:家电、空调或个人医疗设备。本文将探讨基于ARM的标准微控制器如何在一个被DSP和FPGA长期垄断的市场上打破复杂的控制模式,我们将以意法半导体的基于Cortex-M3内核的STM32系列微控制器为例论述这个过程。 首先,我们回顾一下电机控制的基本原理。在电机控制系统内,为什么处理器非常重要?我们为什么需要非常好的计算性能?毕竟,Nicolas Tesla在一个世纪前发明
[安防电子]