uart_sample.c 中 ,uart_input()函数没有执行,信号量发送不出,是什么原因
/ 用于接收消息的信号量/
static struct rt_semaphore rx_sem;
static rt_device_t serial;
/ 接收数据回调函数/
static rt_err_t uart_input(rt_device_t dev, rt_size_t size)
{
/ 串口接收到数据后产生中断, 调用此回调函数, 然后发送接收信号量/
rt_kprintf(“======= sem_release ! ======= \n”);
rt_sem_release(&rx_sem);
return RT_EOK;
}
static void serial_thread_entry(void parameter)
{
char ch;
/ 从串口读取一个字节的数据, 没有读取到则等待接收信号量/
while (rt_device_read(serial, 0, &ch, 1) != 1)
{
/ 阻塞等待接收信号量, 等到信号量后再次读取数据*/
rt_kprintf(“======= sem_take !! ======= \n”);
rt_sem_take(&rx_sem, RT_WAITING_FOREVER);
}
rt_kprintf(“======= ch++ ======= \n”);
ch = ch + 1;
rt_device_write(serial, 0, &ch, 1);
}
static int uart_sample(int argc, char *argv[])
{
rt_err_t ret = RT_EOK;
char uart_name[RT_NAME_MAX];
char str[] = “hello BK72xx!\r\n”;
struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT;
}
/ 导出到msh 命令列表中/
MSH_CMD_EXPORT(uart_sample, uart device sample);