Nano 版 RT-Thread 直接拷贝 dataqueue.c 和 dataqueue 添加到工程就可以使用。rt_data_queue 不是 ...
a、发送部分是通过消息队列,相关代码在audio.c中实现(rt_data_queue_push、rt_data_queue_peak、rt_data_queue_pop),主要流程见下图: b、接收部分是通过pipe实现的(具体到代码在audio_pipe.c中),pipe由audio.c中创建,类型为循环覆盖(RT_PIPE_FLAG_FORCE_WR),接收的主要流程如下: 二、至此,音频驱动框架部分...
rt_data_queue_push rt_data_queue_pop 延时 登录后复制rt_thread_sleep rt_thread_delay rt_thread_delay_until rt_thread_mdelay 注:源码中摘录,并无理论考证,更无实际验证 所有被禁止在中断中调用的函数都有个相似的特征 —— 它可能是阻塞的,导致中断无法短时间内返回;或者它想调用可能发生阻塞的 api 。
显然,函数 stm32_hw_usart_init(),顾名思义,是用于初始化USART硬件的函数,因此这个函数一定会在USART使用之前被调用。搜索工程发现,这个函数是在board.c中rt_hw_board_init函数中被调用,而rt_hw_board_init函数又是在startup.c里的 rtthread_startup函数中调用的。进一步在startup.c的main函数中调用的,我们将...
("create memory pool for repaly failed"); return -RT_ENOMEM; } /* init queue for audio replay */ rt_data_queue_init(&replay->queue, CFG_AUDIO_REPLAY_QUEUE_COUNT, 0, RT_NULL); /* init mutex lock for audio replay */ rt_mutex_init(&replay->lock, "replay", RT_IPC_FLAG_PRIO);...
这里分析一下RT-Thread中串口DMA方式的实现,以供做新处理器串口支持时的参考。 背景 在如今的芯片性能和外设强大功能的情况下,串口不实现DMA/中断方式操作,我认为在实际项目中基本是不可接受的,但遗憾的是,rt-thread现有支持的实现中,基本上没有支持串口的DMA,文档也没有关于串口DMA支持相关的说明,这里以STM32实现...
thread=(struct rt_thread*)rt_object_allocate(RT_Object_Class_Thread,name); 由于C语言不是一种面向对象编程的语言,所以没有继承的关键字,上面这条语句我个人猜想可能就是实现继承的一种方法。 经过这条语句后,创建的线程将大变样: 我们可以发现这个线程已经有模有样了,以上只是线程的控制块,线程运行起来还需...
本文学习RT-Thread的消息队列,支持不定长度消息的收发,涉及消息队列的工作机制、消息队列相关函数以及基于STM32的RT-Thread消息队列应用示例,采用RTT&正点原子联合出品潘多拉开发板进行实验,基于STM32L475VET6。 一、消息队列的工作机制 消息队列能够接收来自线程或中断服务例程中不固定长度的消息,并把消息缓存在自己的内...
( exchange='', routing_key='rpc_queue', properties=pika.BasicProperties( reply_to=self.callback_queue, correlation_id=self.corr_id, ), body=str(n)) while self.response is None: self.connection.process_data_events() return int(self.response) fibonacci_rpc = FibonacciRpcClient() print(" ...
static rt_thread_t adc_thread = RT_NULL; static uint8_t adc_data[12]; void AdcInit(void) { AdcGpioInit(); AdcConfig(); } static void adc_thread_entry(void *parameter) { uint16_t ref=0; float ch1=0; float vdd=0; float temp=0; uint16_t part1=0,part2=0; int result; uin...