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搭一个外环来维持控制。