![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
FreeRTOS
文章平均质量分 79
D.luffy
这个作者很懒,什么都没留下…
展开
-
STM32怎么利用串口空闲中断进行DMA接收
一、在底层中初始化DMA接收和串口中断void MX_USART1_UART_Init(void) HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart)     HAL_UART_MspInit(UART_HandleTypeDef* uartHan...原创 2020-04-09 10:19:49 · 983 阅读 · 0 评论 -
移植正点的printf
远程仓一、用STM32CubeMX生成基本MDK工程 生成工程时,需要使能三个中断和2个初始化,中断优先级要大于51、DMA接收中断2、DMA发送中断3、串口中断4、初始化一个二值信号量uart2_busy, 只有等到该信号量时,才能使用串口。使用串口DMA发送,在发送完中断中,释放该信号量。定义一个消息队列,txQueue, 需要发送的atkp_t类型数据包先发送到这个队列里...原创 2020-04-09 09:55:52 · 363 阅读 · 0 评论 -
STM32CubeMX工程中加入RT_thread
远程仓1、在STM32CubeMX中正常生成MDK工程2、MDK官下载RealThread 软件包,并安装3、MDK工程中删除…it.c文件4、加入rt_thead内核5、main.c中加入头文件6、rtconfig.h中配置内存管理...原创 2019-12-07 11:29:07 · 3508 阅读 · 1 评论 -
正点原子MiniFly V1.2学习笔记七---configParamTask
第6个任务,优先级1,最低优先级。配置参数任务 xTaskCreate(configParamTask, "CONFIG_TASK", 150, NULL, 1, NULL);一、全局参数configParam1、参数定义 参数configParam前面没有static, 它是一个全局变量。有h文件中定义为外部变量,然后其它文件只要包含该h文件,就可以使用该变量。2、什么地...原创 2019-07-31 19:27:42 · 1025 阅读 · 2 评论 -
正点原子MiniFly V1.2学习笔记六---stabilizerTask
这集学习第8个任务sensorsTask,2,3,6,7任务后面再学,先学重要的。 xTaskCreate(sensorsTask, "SENSORS", 450, NULL, 4, NULL); //传感器处理任务一、任务函数void sensorsTask(void *param){ sensorsInit(); //-------1初始化传感器 vTaskDelay(15...原创 2019-07-16 13:20:31 · 1483 阅读 · 5 评论 -
正点原子MiniFly V1.2学习笔记五---sensorsTask
这集学习第8个任务sensorsTask,2,3,6,7任务后面再学,先学重要的。 xTaskCreate(sensorsTask, "SENSORS", 450, NULL, 4, NULL); //传感器处理任务一、任务函数void sensorsTask(void *param){ sensorsInit(); //-------1初始化传感器 vTaskDelay(15...原创 2019-07-05 17:49:40 · 1119 阅读 · 1 评论 -
FreeRTOS死机原因
1、中断回调函数中没有使用中断级API (xxFromISR) 函数xSemaphoreGiveFromISR(uart_busy,&HighterTask);----正确xSemaphoreGive(uart_busy);-----错误2、比configMAX_SYSCALL_INTERRUPT_PRIORITY优先级高的中断函数中使用了FreeRTOS的函数3、临界代码保护...原创 2019-07-05 14:46:30 · 13028 阅读 · 2 评论 -
STM32 FreeRTOS的osThreadDef创建任务
一、osThreadDef是一个宏定义#define osThreadDef(name, thread, priority, instances, stacksz) \const osThreadDef_t os_thread_def_##name = { #name, (thread), (priority), (instances), (stacksz) }所以osThread...原创 2019-07-10 14:27:37 · 25161 阅读 · 1 评论 -
正点原子MiniFly V1.2学习笔记一
之前看过原子哥的FreeRTOS开发手册,但是对整个项目 怎么架构还不是很清楚。由于最近工作需要,所以决定通过MiniFly来学习一下FreeRTOS的架构。int main() { systemInit(); /*底层硬件初始化*/ xTaskCreate(startTask, "START_TASK", 300, NULL, 2, &startTaskHandle); /...原创 2019-06-24 16:53:04 · 3336 阅读 · 0 评论 -
正点原子MiniFly V1.2学习笔记四---txQueue队列数据哪来
一、执行串口指令任务原创 2019-06-27 09:56:46 · 1551 阅读 · 0 评论 -
正点原子MiniFly V1.2学习笔记三---atkpRxAnlTask
第5个任务xTaskCreate(atkpRxAnlTask, "ATKP_RX_ANL", 300, NULL, 6, NULL);上面第1个任务,把串口接收到的数据解包后得到指令,然后把指令发送到队列rxQueue里了,该任务就是从队列里取指令,然后分析处理。一、执行串口指令任务void atkpRxAnlTask(void *param){ atkp_t p; while(...原创 2019-06-26 18:14:35 · 1599 阅读 · 0 评论 -
正点原子MiniFly V1.2学习笔记二---radiolinkTask
第1个任务radiolinkTask 处理串口接收到的数据包,把命令提取出来。一、数据包格式 一条指令,包含 功能ID 和数据。功能ID–就是接收方用来区别需要做什么事,数据 --指令中需要的数据。另外,为了区别指令的开始位置,要在开始加上 帧头,为了保证接收正确,还要在最后加上一个校验,如果接收方发现校验错了,就把该指令丢弃。 在atkp.h中:1、宏定义,定义帧头,功能ID 等...原创 2019-06-25 11:11:54 · 1949 阅读 · 6 评论