久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
串口DMA接收(寄存器)
[打印本頁]
作者:
wangxiong
時間:
2016-9-30 11:01
標題:
串口DMA接收(寄存器)
要用到的是串口空閑中斷
特別主要,如果開啟了dma映射,一定記得要開啟syscfg里面的時鐘,
/*
**************************************************************
**名稱: void UART_DMA_Config()
**功能: UART初始化
**入口: 無
**出口: 無
**************************************************************
*/
void UART_DMA_ConfigTx(DMA_Channel_TypeDef*DMA_CHx,ulong cpar,ulong cmar)
{
RCC->AHBENR |= RCC_AHBENR_DMA1EN;
Afx_Delayus(100);
DMA_CHx->CPAR = cpar; //源
DMA_CHx->CMAR = cmar;
DMA_CHx->CCR = 0X00000000;
DMA_CHx->CCR = DMA_CCR_MINC|DMA_CCR_DIR;//memory inc ,read from memory
}
/*
**************************************************************
**名稱: void UART_DMA_ConfigRx()
**功能: UART初始化
**入口: 無
**出口: 無
**************************************************************
*/
void UART_DMA_ConfigRx(DMA_Channel_TypeDef*DMA_CHx,ulong cpar,ulong cmar)
{
RCC->AHBENR |= RCC_AHBENR_DMA1EN;
Afx_Delayus(100);
DMA_CHx->CPAR = cpar; //源
DMA_CHx->CMAR = cmar;
DMA_CHx->CNDTR= 100;
DMA_CHx->CCR = 0X00000000;
DMA_CHx->CCR = DMA_CCR_MINC;//外設和內存都8字節,內存遞增,外設固定,不啟動循環模式,從外設讀取,通道不使能中斷
}
/*
**************************************************************
**名稱: void Afx_UARTInit()
**功能: UART初始化
**入口: 無
**出口: 無
**************************************************************
*/
void Afx_UARTInit(void)
{
RCC->APB2ENR |= RCC_APB2ENR_USART1EN;
RCC->APB2RSTR|=RCC_APB2RSTR_USART1RST; //復位串口1
RCC->APB2RSTR&=~RCC_APB2RSTR_USART1RST; //停止復位
// UARTA 485
USART1->BRR = 480000 / 96;
USART1->CR1 = USART_CR1_TE|USART_CR1_RE|USART_CR1_UE|USART_CR1_IDLEIE; //USART_CR1_RXNEIE|接受中斷允許,接收發送使能,開 啟串口
USART1->CR3 = USART_CR3_DMAT|USART_CR3_DMAR; //發送dma使能
UART_DMA_ConfigTx(DMA1_Channel2,(ulong)&USART1->TDR,(ulong)iSendBuf);
UART_DMA_ConfigRx(DMA1_Channel3,(ulong)&USART1->RDR,(ulong)RX485_fifo.buff);
while((USART1->ISR & USART_ISR_TC) != USART_ISR_TC); /* polling idle frame Transmission */
USART1->ICR |= USART_ICR_TCCF; /* Clear TC flag */
DMA1_Channel3->CCR |= DMA_CCR_EN;
NVIC_SetPriority(USART1_IRQn, 0);
NVIC_EnableIRQ(USART1_IRQn);
}
void Afx_UartDmaEnable(DMA_Channel_TypeDef*DMA_CHx,uchar len)
{
DMA_CHx->CCR&=~(1<<0); //關閉先
DMA_CHx->CNDTR=len; //配置長度,目標和源在初始化的時候已經有配置
DMA_CHx->CCR|=1<<0; //開啟傳輸
}
/*
**************************************************************
**名稱: void USART1_IRQHandler()
**功能: UART1中斷處理
**入口: 無
**出口: 無
**************************************************************
*/
void USART1_IRQHandler(void)
{
ulong rtem;
uchar rGetUartLenth = 0;
rtem = USART1->ISR;
if((rtem & USART_ISR_IDLE) == USART_ISR_IDLE)
{
rGetUartLenth = USART1->RDR; //清USART_IT_IDLE標志
DMA1_Channel3->CCR &= ~DMA_CCR_EN;
rGetUartLenth = 100 - DMA1_Channel3->CNDTR;
DMA1_Channel3->CNDTR = 100;
RX485_fifo.ct = rGetUartLenth;
DMA1_Channel3->CCR |= DMA_CCR_EN;
gRs485Modbus.rNewFramDelay = 0;
gRs485Modbus.rCTRL_BYTE.RecData = START;
}
USART1->RQR |= USART_RQR_RXFRQ;
USART1->ICR |= USART_ICR_ORECF|USART_ICR_IDLECF;
}
串口Modbus校驗處理如下
//************************************************************************
// name :
// Descrp: 接收和解密報文
// input :
// return:
// author:
// date :
//************************************************************************
uchar Afx_Rs485ModbusCommSrtingRecv( uchar *comm_buf)//comm_buf-->ModbusRevBuf 全部數據
{
uchar sta_val = FAIL;
uchar i = 0;
if(gRs485Modbus.rCTRL_BYTE.rModbusNewFram == ModbusReady) //超時 、 數據幀尾
{
gRs485Modbus.rCTRL_BYTE.rModbusNewFram = ModbusNotReady;
if(RX485_fifo.ct >= 5)//gRs232Modbus.MinRecNum
{
INT_BITS CRCData;
INT_BITS CRCDataHL;
CRCData.Val = Afx_CRCCheckSumByte(comm_buf,RX485_fifo.ct-2);
CRCDataHL.v[0] = comm_buf[RX485_fifo.ct-2];
CRCDataHL.v[1] = comm_buf[RX485_fifo.ct-1];
if (CRCData.Val == CRCDataHL.Val)
{
gRs485Modbus.RecValueCount = RX485_fifo.ct;
sta_val = PASS;
}
for(i = 0;i<RX485_fifo.ct;i++)
{
*comm_buf = RX485_fifo.buff
;
comm_buf++;
}
}
RX485_fifo.ct = 0;
}
return sta_val;
}
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日韩三级精品
|
精品免费在线
|
激情五月综合色婷婷一区二区
|
黄色小视频免费看
|
综合网av
|
精品久久久久久久久久久久久久久久
|
九九热在线观看视频
|
国产欧美日韩在线视频
|
黄色国产片
|
国产一级黄色
|
欧美一区二区三区在线观看
|
国产区一区二区
|
自拍偷拍亚洲
|
欧美日韩成人在线观看
|
国产一区在线播放
|
中国av在线播放
|
午夜天堂av
|
亚洲久久久
|
毛片网站大全
|
欧美爱爱视频
|
性色av一区
|
日韩资源在线
|
欧美激情五月
|
成人在线不卡
|
成人动漫一区二区
|
免费av观看
|
毛片视频免费
|
成人免费视频一区二区
|
国产又色又爽又黄又免费
|
黄色免费毛片
|
av免费在线观看网站
|
成人福利网站
|
91女人18毛片水多国产
|
美女国产精品
|
国产视频一二三
|
六月婷婷综合
|
99久久综合
|
欧美日韩成人
|
成人激情视频在线观看
|
午夜视频在线播放
|
免费黄色小说网站
|