stm32项目—人群定位以及可适应的风扇调节风扇(配套程序和文档)
2022-02-08 09:13:52 6.6MB stm32 arm 嵌入式硬件 单片机
平衡小车是用stm32做的,资料包括源码、物料清单、模块接线,模块资料,代码有注释。使用MPU6050姿态传感器模块获取小车的角度,通过串口将提取的信息送给M3,通过M3中的PID算法来计算PWM,将PWM输出至舵机来控制小车的转角,通过M3中的算法控制TB6612FNG电机驱动器,使得电机工作。周期读取自行车角度及MPU6050中数据、使得舵机、电机不断调整,从而获得动态平衡。
2021-12-03 15:42:24 11.98MB 平衡小车 stm32项目 智能平衡车 stm32
1
基于STM32的智慧农业项目工具库
2021-10-08 23:07:58 23KB stm32项目
stm32项目模板,让你快速上手stm32开发,解压后用keil5软件打开即可
2021-09-17 22:05:46 303KB stm32
1
Keil5新建STM32项目教程,内含最新全系了库下载链接,包括ucosIII等
2021-08-25 13:21:33 935KB Keil5 STM32
1
在VSCODE中进行Keil stm32项目源代码编写的设置方法.此设置方法可以确保在VSCODE中编辑stm32 MDK项目源代码时,不会提示任何错误。自动补全非常的好用实用。
2021-07-07 17:22:43 173KB VSCODE STM32 MDK
1
使用STM32单片机实现的乒乓球游戏,有需要单片机实战项目或课程设计的同学可以参考一下实现的思路以及资源的配置。
2021-07-04 17:00:38 437KB 乒乓球 STM32 项目
1
22个STM32项目和一些STM32相关外设的编程教学资料,希望大家喜欢,网盘下载!
2021-07-02 15:46:15 66B STM32项目
1
1、CAN收发队列 使用内存FIFO缓冲CAN帧,适合大数据量通信;并使用内部软中断处理CAN数据,相当于事件响应,综合应该比查询方式节省不少时间,也应该比OS调度省点时间。Can.C:底层处理,Communi.C:与应用层高相关。 应用层处理流程用函数指针表的方式调用减少代码量及阅读整齐;实现CAN各种错误记录机制。已初步测试,该机制可用。 CAN处理流程: 接收:CAN1_RX0_IRQHandler_Name (void), CAN1_RX1_IRQHandler(void) 接收中断,CAN_QueueWriteQuick()将当前的有效报文压入内存FIFO,压入的数据为整个CAN邮箱数据,所以后续的处理函数可以分辨出完整的数据。 void CAN1_RX0_IRQHandler_Name (void) // CAN1_RX0_IRQHandler_Name { /* FIFO从空状态开始,在接收到第一个有效的报文后,FIFO状态变为挂号_1(pending_1), 硬件相应地把CAN_RFR寄存器的FMP[1:0]设置为’01’(二进制01b)。 软件可以读取FIFO输出邮箱来读出邮箱中的报文,然后通过对CAN_RFR寄存器的RFOM位 设置’1’来释放邮箱,这样FIFO又变为空状态了。如果在释放邮箱的同时, 又收到了一个有效的报文,那么FIFO仍然保留在挂号_1状态,软件可以读取FIFO 输出邮箱来读出新收到的报文。 如果应用程序不释放邮箱,在接收到下一个有效的报文后,FIFO状态变为 挂号_2(pending_2),硬件相应地把FMP[1:0]设置为’10’(二进制10b)。 重复上面的过程,第三个有效的报文把FIFO变为挂号_3状态(FMP[1:0]=11b)。 此时,软件必须对RFOM位设置1来释放邮箱,以便FIFO可以有空间来存放下一个有效的 报文;否则,下一个有效的报文到来时就会导致一个报文的丢失。 */ while (CAN1->RF0R & CAN_RF0R_FMP0) // message pending ? { CAN_QueueWriteQuick(&CanRxQueue;, (T_CanFrame *)&CAN1;->sFIFOMailBox[CAN_FIFO0]); CAN1->RF0R |= CAN_RF0R_RFOM0; // Release FIFO 0 output mailbox #if CAN1_SWI_HANDLE_EN > 0 /* Add by Xsky 2011-06-18 15:48 */ EXTI->SWIER |= CAN1_SWI_EXTI_LINE; /* Add by Xsky 2011-06-18 15:47 */ #endif } } void CAN1_RX1_IRQHandler (void) { while (CAN1->RF1R & CAN_RF1R_FMP1) // message pending ? { CAN_QueueWriteQuick(&CanRxQueue;, (T_CanFrame *)&CAN1;->sFIFOMailBox[CAN_FIFO1]); CAN1->RF1R |= CAN_RF1R_RFOM1; // Release FIFO 1 output mailbox #if CAN1_SWI_HANDLE_EN > 0 /* Add by Xsky 2011-06-18 15:48 */ EXTI->SWIER |= CAN1_SWI_EXTI_LINE; /* Add by Xsky 2011-06-18 15:47 */ #endif } } 接收中断响应后,触发STM32的内部软中断(EXTI->SWIER |= CAN1_SWI_EXTI_LINE;), 实现当CAN硬件中断响应完成后,触发更低优先级的中断去处理内存中的CAN数据队列,如果处理时再发生新的CAN硬件接收中断,则会先响应硬件中断,以减少或不丢失CAN FIFO邮箱数据。处理函数在Communi.C中实现。 发送,CAN_SendFrame(): 发送时如果邮箱有空则直接将数据压入邮箱,否则将数据压入内存发送队列。等待上一次数据发送完成时,在发送中断中提取FI
2021-06-01 16:38:23 1.27MB STM32 CAN UART uCOS
1
题目介绍具体看:https://blog.csdn.net/qq_42468502/article/details/117403994
2021-05-30 22:01:20 587.64MB stm32
1