当前位置: 首页>>代码示例>>C++>>正文


C++ rt_hw_interrupt_disable函数代码示例

本文整理汇总了C++中rt_hw_interrupt_disable函数的典型用法代码示例。如果您正苦于以下问题:C++ rt_hw_interrupt_disable函数的具体用法?C++ rt_hw_interrupt_disable怎么用?C++ rt_hw_interrupt_disable使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了rt_hw_interrupt_disable函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: sys_arch_protect

sys_prot_t sys_arch_protect(void)
{
    rt_base_t level;

    /* disable interrupt */
    level = rt_hw_interrupt_disable();

    return level;
}
开发者ID:haitao52198,项目名称:HD-Elastos,代码行数:9,代码来源:sys_arch.c

示例2: SECTION

SECTION("itcm") status_t flexspi_nor_flash_erase_sector(FLEXSPI_Type *base, uint32_t address) 
{
    status_t status;
    flexspi_transfer_t flashXfer;
    rt_uint32_t level;
    level = rt_hw_interrupt_disable();
    FLEXSPI_Enable(FLEXSPI, false);
    CLOCK_DisableClock(FLEXSPI_CLOCK);
    CLOCK_SetDiv(kCLOCK_FlexspiDiv, 3); /* flexspi clock 332M, DDR mode, internal clock 166M. */
    CLOCK_EnableClock(FLEXSPI_CLOCK);
    FLEXSPI_Enable(FLEXSPI, true);
    /* Write enable */
    status = flexspi_nor_write_enable(base, address);

    if (status != kStatus_Success)
    {
        FLEXSPI_Enable(FLEXSPI, false);
        CLOCK_DisableClock(FLEXSPI_CLOCK);
        CLOCK_SetDiv(kCLOCK_FlexspiDiv, 0); /* flexspi clock 332M, DDR mode, internal clock 166M. */
        CLOCK_EnableClock(FLEXSPI_CLOCK);
        FLEXSPI_Enable(FLEXSPI, true);
        FLEXSPI_SoftwareReset(FLEXSPI);
        rt_hw_interrupt_enable(level);
        return status;
    }

    flashXfer.deviceAddress = address;
    flashXfer.port = kFLEXSPI_PortA1;
    flashXfer.cmdType = kFLEXSPI_Command;
    flashXfer.SeqNumber = 4;
    flashXfer.seqIndex = HYPERFLASH_CMD_LUT_SEQ_IDX_ERASESECTOR;
    status = FLEXSPI_TransferBlocking(base, &flashXfer);

    if (status != kStatus_Success)
    {
        FLEXSPI_Enable(FLEXSPI, false);
        CLOCK_DisableClock(FLEXSPI_CLOCK);
        CLOCK_SetDiv(kCLOCK_FlexspiDiv, 0); /* flexspi clock 332M, DDR mode, internal clock 166M. */
        CLOCK_EnableClock(FLEXSPI_CLOCK);
        FLEXSPI_Enable(FLEXSPI, true);
        FLEXSPI_SoftwareReset(FLEXSPI);
        rt_hw_interrupt_enable(level);
        return status;
    }

    status = flexspi_nor_wait_bus_busy(base);
    rt_hw_cpu_dcache_ops(RT_HW_CACHE_INVALIDATE,(void *)(FLEXSPI_AMBA_BASE+address),FLEXSPI_NOR_SECTOR_SIZE);
    rt_hw_cpu_icache_ops(RT_HW_CACHE_INVALIDATE,(void *)(FLEXSPI_AMBA_BASE+address),FLEXSPI_NOR_SECTOR_SIZE);
    FLEXSPI_Enable(FLEXSPI, false);
    CLOCK_DisableClock(FLEXSPI_CLOCK);
    CLOCK_SetDiv(kCLOCK_FlexspiDiv, 0); /* flexspi clock 332M, DDR mode, internal clock 166M. */
    CLOCK_EnableClock(FLEXSPI_CLOCK);
    FLEXSPI_Enable(FLEXSPI, true);
    FLEXSPI_SoftwareReset(FLEXSPI);
    rt_hw_interrupt_enable(level);
    return status;
}
开发者ID:geniusgogo,项目名称:rt-thread,代码行数:57,代码来源:drv_flexspi_hyper.c

示例3: rt_thread_kill

int rt_thread_kill(rt_thread_t tid, int sig)
{
    siginfo_t si;
	rt_base_t level;
	struct siginfo_node *si_node;

    RT_ASSERT(tid != RT_NULL);
    if (!sig_valid(sig)) return -RT_EINVAL;

    dbg_log(DBG_INFO, "send signal: %d\n", sig);
    si.si_errno = RT_EINTR;
    si.si_signo = sig;
    si.si_code  = SI_USER;
    si.si_value.sival_ptr = RT_NULL;

	level = rt_hw_interrupt_disable();
    if (tid->sig_pending & sig_mask(sig))
    {
        /* whether already emits this signal? */
        struct rt_slist_node *node;
        struct siginfo_node  *entry;

		node = (struct rt_slist_node *)tid->si_list;
		rt_hw_interrupt_enable(level);

		/* update sig infor */
		rt_enter_critical();
        for (; (node) != RT_NULL; node = node->next)
        {
            entry = rt_slist_entry(node, struct siginfo_node, list);
            if (entry->si.si_signo == sig)
            {
                memcpy(&(entry->si), &si, sizeof(siginfo_t));
				rt_exit_critical();
                return 0;
            }
        }
		rt_exit_critical();

		/* disable interrupt to protect tcb */
		level = rt_hw_interrupt_disable();
    }
	else
	{
开发者ID:onelife,项目名称:rt-thread,代码行数:44,代码来源:signal.c

示例4: rt_serial_read

static rt_size_t rt_serial_read(rt_device_t dev, rt_off_t pos, void* buffer, rt_size_t size)
{
	rt_uint8_t* ptr;
	struct rt_ppc405_serial* device;

	device = (struct rt_ppc405_serial*) dev;
	RT_ASSERT(device != RT_NULL);

	/* point to buffer */
	ptr = (rt_uint8_t*) buffer;

	if (dev->flag & RT_DEVICE_FLAG_INT_RX)
	{
		while (size)
		{
			/* interrupt receive */
			rt_base_t level;

			/* disable interrupt */
			level = rt_hw_interrupt_disable();
			if (device->read_index != device->save_index)
			{
				*ptr = device->rx_buffer[device->read_index];

				device->read_index ++;
				if (device->read_index >= RT_UART_RX_BUFFER_SIZE)
					device->read_index = 0;
			}
			else
			{
				/* no data in rx buffer */

				/* enable interrupt */
				rt_hw_interrupt_enable(level);
				break;
			}

			/* enable interrupt */
			rt_hw_interrupt_enable(level);

			ptr ++; size --;
		}

		return (rt_uint32_t)ptr - (rt_uint32_t)buffer;
	}
	else if (dev->flag & RT_DEVICE_FLAG_DMA_RX)
	{
		/* not support right now */
		RT_ASSERT(0);
	}

	/* polling mode */
	RT_ASSERT(0);

	return (rt_size_t)ptr - (rt_size_t)buffer;
}
开发者ID:634351070,项目名称:rt-thread,代码行数:56,代码来源:serial.c

示例5: main

int main(void)
{
	/* disable interrupt first */
	rt_hw_interrupt_disable();

	/* startup RT-Thread RTOS */
	rtthread_startup();

	return 0;
}
开发者ID:304471720,项目名称:rt-thread,代码行数:10,代码来源:startup.c

示例6: rt_thread_handle_sig

void rt_thread_handle_sig(rt_bool_t clean_state)
{
	rt_base_t level;

    rt_thread_t tid = rt_thread_self();
    struct siginfo_node *si_node;

	level = rt_hw_interrupt_disable();
    while (tid->sig_pending & tid->sig_mask)
    {
        int signo, error;
        rt_sighandler_t handler;

		si_node = (struct siginfo_node *)tid->si_list;
		if (!si_node) break;

		/* remove this sig info node from list */
        if (si_node->list.next == RT_NULL)
            tid->si_list = RT_NULL;
        else
            tid->si_list = (void*)rt_slist_entry(si_node->list.next, struct siginfo_node, list);

        signo   = si_node->si.si_signo;
        handler = tid->sig_vectors[signo];
		rt_hw_interrupt_enable(level);

        dbg_log(DBG_LOG, "handle signal: %d, handler 0x%08x\n", signo, handler);
        if (handler) handler(signo);

		level = rt_hw_interrupt_disable();
        tid->sig_pending &= ~sig_mask(signo);
        error = si_node->si.si_errno;

        rt_mp_free(si_node); /* release this siginfo node */
        /* set errno in thread tcb */
        tid->error = error;
    }

	/* whether clean signal status */
	if (clean_state == RT_TRUE) tid->stat &= ~RT_THREAD_STAT_SIGNAL;

	rt_hw_interrupt_enable(level);
}
开发者ID:onelife,项目名称:rt-thread,代码行数:43,代码来源:signal.c

示例7: _vcom_reset_state

static void _vcom_reset_state(void)
{
    int lvl = rt_hw_interrupt_disable();
    tx_ringbuffer.read_mirror  = tx_ringbuffer.read_index = 0;
    tx_ringbuffer.write_mirror = tx_ringbuffer.write_index = 0;
    vcom_connected = RT_FALSE;
    vcom_in_sending = RT_FALSE;
    /*rt_kprintf("reset USB serial\n", cnt);*/
    rt_hw_interrupt_enable(lvl);
}
开发者ID:dtyangcm,项目名称:rtt-stm32f103c8,代码行数:10,代码来源:cdc_serial.c

示例8: rt_interrupt_enter

/**
 * This function will be invoked by BSP, when enter interrupt service routine
 *
 * @note please don't invoke this routine in application
 *
 * @see rt_interrupt_leave
 */
void rt_interrupt_enter()
{
    rt_base_t level;

    RT_DEBUG_LOG(RT_DEBUG_IRQ,("irq comming..., irq nest:%d\n", rt_interrupt_nest));

    level = rt_hw_interrupt_disable();
    rt_interrupt_nest ++;
    rt_hw_interrupt_enable(level);
}
开发者ID:comrid1987,项目名称:jb3500,代码行数:17,代码来源:irq.c

示例9: rt_interrupt_leave

/**
 * This function will be invoked by BSP, when leave interrupt service routine
 *
 * @note please don't invoke this routine in application
 *
 * @see rt_interrupt_enter
 */
void rt_interrupt_leave()
{
    rt_base_t level;

    RT_DEBUG_LOG(RT_DEBUG_IRQ,("irq leave, irq nest:%d\n", rt_interrupt_nest));

    level = rt_hw_interrupt_disable();
    rt_interrupt_nest --;
    rt_hw_interrupt_enable(level);
}
开发者ID:comrid1987,项目名称:jb3500,代码行数:17,代码来源:irq.c

示例10: main

int main(void)
{
	rt_uint32_t level UNUSED;

	/* disable interrupt first */
	level = rt_hw_interrupt_disable();
	rtthread_startup();

	return 0;
}
开发者ID:SmartPeach,项目名称:net-sdr,代码行数:10,代码来源:startup.c

示例11: rt_completion_init

void rt_completion_init(struct rt_completion *completion)
{
    rt_base_t level;
    RT_ASSERT(completion != RT_NULL);

    level = rt_hw_interrupt_disable();
    completion->flag = RT_UNCOMPLETED;
    rt_list_init(&completion->suspended_list);
    rt_hw_interrupt_enable(level);
}
开发者ID:nathanlnw,项目名称:tw705_HB_gghypt,代码行数:10,代码来源:completion.c

示例12: main

int main(void)
{
	/* disable interrupt first */
	rt_hw_interrupt_disable();

	/* invoke rtthread_startup */
	rtthread_startup();
	
	return 0;
}
开发者ID:bright-pan,项目名称:smart-lock,代码行数:10,代码来源:startup.c

示例13: rt_hw_cpu_shutdown

/** shutdown CPU */
void rt_hw_cpu_shutdown()
{
	rt_uint32_t level;
	rt_kprintf("shutdown...\n");

	level = rt_hw_interrupt_disable();
	while (level)
	{
		RT_ASSERT(0);
	}
}
开发者ID:csz-cmy,项目名称:rt-thread,代码行数:12,代码来源:cpu.c

示例14: rt_signal_mask

void rt_signal_mask(int signo)
{
    rt_base_t level;
    rt_thread_t tid = rt_thread_self();

    level = rt_hw_interrupt_disable();

    tid->sig_mask &= ~sig_mask(signo);

    rt_hw_interrupt_enable(level);
}
开发者ID:onelife,项目名称:rt-thread,代码行数:11,代码来源:signal.c

示例15: serial_ringbuffer_size

rt_inline rt_uint32_t serial_ringbuffer_size(struct serial_ringbuffer *rbuffer)
{
    rt_uint32_t size;
    rt_base_t level;

    level = rt_hw_interrupt_disable();
    size = (rbuffer->put_index - rbuffer->get_index) & (RT_SERIAL_RB_BUFSZ - 1);
    rt_hw_interrupt_enable(level);

    return size;
}
开发者ID:634351070,项目名称:rt-thread,代码行数:11,代码来源:serial.c


注:本文中的rt_hw_interrupt_disable函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。