工巡赛调破车日志

1、在freertos中安全使用printf:

       来自

(25条消息) FreeRTOS 线程安全的printf输出(使用STM32F103)_freertos printf_柒妖71的博客-CSDN博客

static int inHandlerMode (void) //若在中断中__get_IPSR()返回1,否则返回0
{
   return __get_IPSR();
}

void print_usart2(char *format, ...)
{
   char buf[64];
   if(inHandlerMode() != 0)
	{
       taskDISABLE_INTERRUPTS();
	}
   else
   {
	   while(HAL_UART_GetState(&huart2) == HAL_UART_STATE_BUSY_TX)//若串口忙则挂起此任务
	   taskYIELD();
	}
	va_list ap;
	va_start(ap, format);
	vsprintf(buf, format, ap);
	HAL_UART_Transmit(&huart2, (uint8_t *)buf, strlen(buf), 100);
	va_end(ap);
	if(inHandlerMode() != 0)
		taskENABLE_INTERRUPTS();
}

2、&的优先级大于|

3、编码值读取到的是-1:每个定时器的GPIO口有多个,用错了,改成正确的GPIO口即可

4、MyError函数如何能不被打扰:添加下面内容

    if(inHandlerMode() != 0)
	{
        taskDISABLE_INTERRUPTS();//若在中断中调用则关闭中断,防止中断嵌套造成线程不安全
	}
    else
    {
		taskENTER_CRITICAL();    //若不在中断中则进入临界区关闭中断且禁止任务调度
	}

5、关于freertos的临界区:“ 基本临界区是保护一段代码区间不被其他任务或中断打断。而由挂起调度器实现的临界区只能保护一段代码不被其他任务打断,并不能约束中断,因为在这种方式下,中断是使能的。调度器处于挂起状态时,不能调用FreeRTOS的API函数“

6、freertos的优先级的混乱,比freertos的优先级低是指小于freertos设置的优先级还是高于呢:LIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY  这个参数,采用系统优先级的方式。

7、在串口中断中无法用串口打印出浮点数:(26条消息) 彻底解决FreeRTOS中的printf问题---写个伪printf_黄帅比。的博客-CSDN博客

8、发现了个freertos不错的教程:freeRTOS - 随笔分类 - jasonactions - 博客园 (cnblogs.com)

9、math库中的fmod等针对float的函数。

10、因为需要发送浮点数给蓝牙,而发送需要以单个字节的形式发送,所以需要得到浮点数的四个字节的内容。

        最开始如下代码,想简单了,把浮点数赋值给整型,会先把浮点数去掉小数后赋值给整型,是将值赋值给了整型。

int main(){
	float a = 100.1;
	int b;
	
	b = a;
	
	printf("%f",b);        // 输出为乱码
}

        正确代码应该如此

int main(){
	float a = 100.1;
	int c = 0;
	unsigned char * index = (unsigned char * )&a;
	c = *index;
	
	for(int i = 3;i >= 0;i--){
		c <<= 8;		
		c |= *(index+i);
	}
	
	printf("%f",*((float *)&c));    // 输出100.1
}

11、在F4移植MPU6050的DMP库:在平衡小车的那个移植DMP的教程中,将F1的Libraries的库换成F4的库就可以了,不需要将symbols从F1改成F4。

12、循迹的新思路:pid红外寻迹模块原理_哔哩哔哩_bilibili        这波数据整合蛮6!

13、IC的0.1uf:

(26条消息) 芯片IC附近为什么都放0.1uF的电容?这样做正确吗?有什么依据吗?_cyfhan的博客-CSDN博客

 14、

 Freertos不使用systick作为其他的时钟源以及

开了MPU6050的EXTI后,osdelay的延迟时间不准了:freertos使用的时钟源的优先级这两个问题的答案:

(29条消息) cubemx在使用freertos的时候为何推荐使用除systick以外的timebase_u010020404的博客-CSDN博客_freeos systick timer

15、画电源模块:

        在输入输出上的电容用1206封装,1206封装功率大,用于电源上。

        实心填充和铺铜的区别:实心填充只能有一个网络

        阻焊层和助焊层的区别:一文看懂线路板助焊层跟阻焊层的区别与作用 - 知乎 (zhihu.com)

16、破车的2、3轮为什么乱转:

        encode 分配错误。。。

17、用MPU搭一个外环来维持控制。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值