前言:
现在小伙伴们对“定时器1ms中断”大约比较看重,各位老铁们都需要知道一些“定时器1ms中断”的相关资讯。那么小编在网络上汇集了一些有关“定时器1ms中断””的相关资讯,希望各位老铁们能喜欢,我们一起来学习一下吧!相信大家在进行一些技术研发时,都会经历遇到问题-解决问题的一个过程。近期笔者在进行资产监控技术研发,该技术要求主要是解决企业在运输时遇到的一些问题,比如物流更新信息慢、货车运输距离远,不好管理、货物运输时得不到安全保障等。
当司机在运输过程中,除了运输公司指派的物件,在途中又接“私活”,因而导致原本货物被压坏或者没有按照预期日期送达。面对这样的情况,企业虽然明令禁止,但是却无法彻底杜绝。但是通过资产监控技术可以高效帮助企业解决这一问题。我们在进行资产监控技术研发时,需要对HC32L110串口初始化,接下来简单介绍下HC32L110串口初始化的过程。
HC32L110串口初始化,采用模式一全双工模式,波特率是根据定时器0来确定的,以下为串口0的初始化过程。
void Uart0_Init(void)
{
uint16_t timer; uint32_t pclk; stc_uart_irq_cb_t stcUartIrqCb; stc_uart_config_t stcUartCfg; stc_uart_baud_config_t stcBaud; Clk_SetPeripheralGate(ClkPeripheralGpio,TRUE); Gpio_SetFunc_UART0TX_P35(); //设置P35为UART0发送 Gpio_SetFunc_UART0RX_P36(); //设置P36为UART0接收 Clk_SetPeripheralGate(ClkPeripheralUart0,TRUE); //使能UART0时钟 stcUartIrqCb.pfnRxIrqCb = USART0_IRQHandler; //设置接收中断回调函数 stcUartIrqCb.pfnTxIrqCb = NULL; //设置发送中断回调函数 stcUartCfg.pstcIrqCb = &stcUartIrqCb; //配置串口中断 stcUartCfg.bTouchNvic = TRUE; //允许串口中断 stcUartCfg.enRunMode = UartMode1; //串口通讯使用模式1 stcBaud.bDbaud = 0u; //双倍波特率功能 stcBaud.u32Baud = 9600u; //更新波特率位置 stcBaud.u8Mode = UartMode1; //按模式1计算波特率参数 pclk = Clk_GetPClkFreq(); //获得PCLK timer=Uart_SetBaudRate(UARTCH0,pclk,&stcBaud); //根据波特率算出对应的定时器的设置值 Tim0_Init(timer); //初始化波特率对应的定时器 (UART0对应TIMER0 UART1对应TIMER1 ) Uart_Init(UARTCH0, &stcUartCfg); //初始化UART1}
//接收完成通过定时器2来确定,定时器2采用1ms中断
//Usart接收中断
void USART0_IRQHandler(void)
{
Usart0.Rx_Complete = false;
Usart0.TimeOut = 5;
Usart0.Rx_Buff[Usart0.Rxlenth] = M0P_UART1->SBUF; //读出接收数据
Usart0.Rxlenth++;
Usart0.Rxlenth = (Usart0.Rxlenth >= Bufflenth)? 0 :Usart0.Rxlenth; //接收计数加1
}
标签: #定时器1ms中断