- 博客(45)
- 收藏
- 关注
原创 cubemx为啥在SPI配置时将MISO设置为AFPP,而不是输入模式
尽管MISO在CubeMX中被配置为AFPP模式,但在SPI通信过程中,MISO引脚会根据需要自动切换为输入模式或输出模式,以实现双向数据传输。
2023-11-14 10:48:36
828
原创 程序跑进了hardfault
例如,对于某些架构,当一个结构体成员变量没有按照对齐规则排列时,CPU可能需要进行多次内存访问操作,从而导致性能下降。因此,在编写程序时,需要特别注意结构体的对齐问题,确保结构体成员变量按照对齐规则进行排列,以避免出现内存访问错误和程序异常。对齐是指将结构体成员变量按照特定的字节对齐规则进行排列的过程,这样可以确保结构体成员在内存中的地址是按照一定规律排列的。结构体对齐是为了提高内存读写的效率和性能。当结构体成员变量没有按照对齐规则进行排列时,可能会导致访问内存的错误,从而导致程序出现异常,如硬件错误。
2023-11-01 16:10:33
245
原创 待机模式中唤醒
代码源自正点原子文档源自STM32F1XX参考手册中文版参考[https://www.cnblogs.com/alvis-jing/p/3712106.html#!comments]
2023-03-26 15:18:19
671
原创 cubemx移植事件标志组These IPs still have some not configured or wrong parameter values:[FREERTOS]
cubemx移植事件标志组
2022-07-13 22:18:48
2279
1
原创 xSemaphoreCreateCounting和osSemaphoreCreate的区别
xSemaphoreCreateCounting和osSemaphoreCreate的区别
2022-07-12 10:31:39
1352
原创 Error: Undefined symbol __HAL_TIM_GetCounter
解决方法:添加头文件#include "stm32_hal_legacy.h"问题解决
2022-02-10 16:38:34
1405
1
原创 习题3-1 比较大小
习题3-1 比较大小本题要求将输入的任意3个整数从小到大输出。输入格式:输入在一行中给出3个整数,其间以空格分隔。输出格式:在一行中将3个整数从小到大输出,其间以“->”相连。#include <stdio.h>int PrintN(int a[3]){ int temp,i,n; for(i=0;i<3;i++) { for(n=0;n<3;n++) { if(a[i]<a[n]) { temp=a[i];
2021-10-13 20:28:39
51
原创 习题3-4 统计学生成绩
习题3-4 统计学生成绩本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:大于等于90分为A;小于90且大于等于80为B;小于80且大于等于70为C;小于70且大于等于60为D;小于60为E。#include <stdio.h>int main(){ float speed,max,x; scanf("%f %f",&speed,&max); x=(speed-max)/max*100; i
2021-10-13 20:27:26
388
原创 练习3-8 查询水果价格
练习3-8 查询水果价格给定四种水果,分别是苹果(apple)、梨(pear)、桔子(orange)、葡萄(grape),单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。首先在屏幕上显示以下菜单:[1] apple[2] pear[3] orange[4] grape[0] exit用户可以输入编号1~4查询对应水果的单价。当连续查询次数超过5次时,程序应自动退出查询;不到5次而用户输入0即退出;输入其他编号,显示价格为0。#include <
2021-10-13 20:25:48
295
原创 发送给视觉的数据(帧和数据包)
void sendVisionData(uint8_t Modle,uint8_t robotcolor,uint16_t Direction){ memset(Tx_Buffer,0,VISON_SEND_LENGTH); //数据清零 VisonHeader.SOF=VIOSN_SOF;//A5 VisonHeader.robotColor=robotcolor;//02 VisonHeader.model=Modle;//02 //写入帧头数据 memcpy(Tx_Buffer,&
2021-09-24 18:17:00
163
原创 ../Drivers/CMSIS/Include/arm_math.h(314): error: #35: #error directive: “Define according the used
现象:可能出现会一大堆报错。解决方法:不要紧张,把报错显示的那句复制到魔术棒里的C/C#的Define中,问题解决
2021-09-19 17:04:09
4389
2
原创 斜坡函数数
斜坡函数不看.angle,看total_angle,最终实现的是relative_angle和得到的total_angle应该是一样大,即每次转动相同的角度2000。我一开始的total_angle是0,所以经过斜坡函数计算后也应该total_angle是2000。关于云台归中函数中,会判断.angle在一个范围里面,这里实现的功能是让电机转到固定的角度,所以要用到angle。.angle是电机定子上固定的角度,每个数值固定一个角度,像那种有时针分针的那种时钟一样,每个地方固定一个值。而我这里是想让它每
2021-09-15 10:20:59
1392
原创 pid计算和发送电流
以工程中的Catching.c文件举例 pid_t Moto_Lift_Island_Pid_Pos[2];//在要计算pid的文件里面添加这个位置环结构体,如CatchingTask.c里面 pid_t Moto_Lift_Island_Pid_Spd[2]; //在要计算pid的文件里面添加这个速度环结构体 moto_measure_t Moto_Lift_Island[2];//在canbus_task.c里面添加 float pid_calc(pid_t* pid, float ge
2021-08-29 12:48:11
427
原创 陀陀陀螺仪
陀螺仪加速度计:accelerometer,单位g陀螺仪:gyro,单位度/秒加速度计:1.加速度计的本质是检测力而非加速度。只是加速度所引起的惯性力正好能被加速度计的检测装置所捕获。2.获取加速度计数据的方法。大多数加速度计可归为两类:数字和模拟。数字加速度计可通过I2C,SPI或USART方式获取信息,而模拟加速度计的输出是一个在预定范围内的电压值,你需要用ADC(模拟量转数字量)模块将其转换为数字值。角度可以直接读到,速度要通过角速度转换,而角速度要通过分解得到...
2021-08-29 11:36:30
905
2
原创 CAN通信
CAN的通信速率按照电调的手册要求的1Mbps配置,71.42854142857473ns*(9+4+1)=1000ns=1us=1MbpsCAN总线的一个数据帧中所需要传输的有效数据是8byte(字节)。一帧完整的CAN报文就完全可以将所需要的数据发送出去,不许将数据拆分成许多不同的数据帧,对比遥控器的串口每次只能发送一个字节的数据,一帧完整的数据需要发送18个字节,减少了数据拼接时丢帧的可能(要丢就全丢了)GetMotorMeasure()是接收电调向总线上发送的数据。首先根据接收到的ID判断
2021-08-18 11:42:24
3975
原创 偷学一些电控
MCU:微控制器-------STM32/K60/LPC3780 168MHz无法跑非实时的操作系统-----Windows,MAC,LINUX能跑实时操作系统----FreeRTOS,RT-Thread面向实时性要求高的领域MPU:微处理器----A10/GHz能跑非实时OS----Windows,MAC,LINUX面向大数据处理-----AI算法,视觉RAM----内存 ROM----硬盘 处理器----SRAM ----FLASH 单片机
2021-08-13 10:12:23
85
原创 练习2-10 计算分段函数[1]
本题目要求计算下列分段函数f(x)的值:公式输入格式:输入在一行中给出实数x。输出格式:在一行中按“f(x) = result”的格式输出,其中x与result都保留一位小数。输入样例1:10输出样例1:f(10.0) = 0.1输入样例2:0输出样例2:f(0.0) = 0.0void main(){ float x,result; scanf("%f",&x); if(x==0) { result=0.0; } else {
2021-07-25 23:49:50
105
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人