05 2017 档案
摘要:原文地址:http://www.cnblogs.com/god-of-death/p/6917837.html 1、二值信号量 就像一个标志位,事件产生置一,事件处理后直零 用于任务之间的同步,即一个任务 give token,另一个任务 take token 特别提醒: V7.X版本中使用vSem
阅读全文
摘要:带过零检测:只有在过零才检测有没有光,有则在这个周期内是导通的;不能决定在一个周期内的某个时刻导通;用带过零检测的光耦控制可控硅,电网的波形还是完整的正弦波,因此不会产生谐波对电网产生干扰。
阅读全文
摘要:stm32用printf函数重定向到串口USART1发现第一个字符没打印出来具体如下: 刚开始修改fputc函数如下: int fputc(int ch,FILE *f) { USART_SendData(USART1,(uint8_t)ch); while(USART_GetFlagStatus(
阅读全文
摘要:#define __debug #ifdef __debug #define debug(format,...) printf("File: "__FILE__"\nLine: %05d\nmessage: "format"\n", __LINE__, ##__VA_ARGS__) #else #d
阅读全文
摘要:原文地址:http://www.cnblogs.com/god-of-death/p/6891400.html FreeRTOS中的断言函数configASSERT()和标准C中的断言函数assert()是一样的,如果断言函数的参数为0时将触发断言函数的执行。 FreeRTOS的断言功能在调试阶段是
阅读全文
摘要:1、创建任务、定时器等都需要耗用分配给FreeRTOS的heap,由于RAM有限,分配作为FreeRTOS的heap量有限,一不小心就不够用了,所以应该判断返回值,如下图: 2、在程序运行过程中要实时检测任务是否栈溢出,可以编写如下函数: void vApplicationStackOverflow
阅读全文
摘要:注意点: 1、首先要将中断的嵌套全部设置为抢占优先级。 2、将freertos系统内核中断(configKERNEL_INTERRUPT_PRIORITY)的优先级设置成最低,用来设置tick中断和PendSV中断的优先级 3、将freertos的最大系统调用中断优先级(configMAX_SYSC
阅读全文
摘要:如果使用xTaskCreate() 创建任务,任务栈使用的是FreeRTOS heap
阅读全文
摘要:1、只有进入定时器守护任务,从定时器命令队列取出命令,队列空间才会空出一个可用空间;所有定时器共用一个定时器队列 2、如果使用软件定时器,在调度器开始前,会自动创建一个定时器守护任务,configTIMER_TASK_STACK_DEPTH和configTIMER_TASK_STACK_DEPTH用
阅读全文
摘要:分配给FreeRTOS的heap过少,可能出现任务创建不成功;也可能调用vTaskStartScheduler()后有返回(也就是执行下一条程序),实质上也是vTaskStartScheduler()函数里面创建idle任务或者定时器任务因为heap不够用而创建失败
阅读全文
摘要:通信,有时候为了保证截获方即使得到了数据包,也不知道内容,所以加密传输即可;但有时候不需要知道数据包的内容,只要知道知道数据包能干嘛即可,比如发指令,此种情况单单对数据包进行加密就不够了。 基础知识: 1、单片机适用的数据加密算法有TEA,经过TEA加密的数据字节数和加密前的一样,只是数据不一样了
阅读全文
摘要:__weak作用:允许多个同名函数同时存在,但是最多只有一个没有__weak修饰。如果有non-weak函数(没__weak修饰),则此函数被使用,否则从__weak修饰的函数中选择其中一个。 下图来自IAR Embeded Workbench IDE中的help->content
阅读全文
摘要:FreeRTOS官方例程中设置了需要“Require prototype”,所以每个函数(除了main函数)都需要函数声明,其中对于无形参的函数声明要加void,比如void led_init(void); 如果不需要“Require prototype”,如果函数被调用,同样需要函数声明,但是对于
阅读全文