85 lines
4.4 KiB
C
85 lines
4.4 KiB
C
/*******************************************************************************
|
||
* @file E34.c
|
||
* @Author: MQjehovah mail:MQjehovah@hotmail.com
|
||
* @version 1.0.0
|
||
* @date 2017-12-22 10:18:04
|
||
* @brief
|
||
******************************************************************************
|
||
* @attention
|
||
*******************************************************************************/
|
||
/* Includes ------------------------------------------------------------------*/
|
||
#include "e34.h"
|
||
/* Definition ----------------------------------------------------------------*/
|
||
ring_buffer E34_RX_BUF;
|
||
ring_buffer *pE34_RX_BUF = &E34_RX_BUF;
|
||
/* Functions -----------------------------------------------------------------*/
|
||
/*******************************************************************************
|
||
* @brief E34模块初始化
|
||
* @param None
|
||
* @retval None
|
||
* @Note None
|
||
*******************************************************************************/
|
||
void E34_Init(void)
|
||
{
|
||
GPIO_InitTypeDef GPIO_InitStructure;
|
||
USART_InitTypeDef USART_InitStructure;
|
||
NVIC_InitTypeDef NVIC_InitStructure;
|
||
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); //使能GPIO时钟
|
||
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); //使能USART3时钟
|
||
|
||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13; //GPIOB11与GPIOB10
|
||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //普通输出模式
|
||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //100MHz
|
||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出
|
||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉
|
||
GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化PA9,PA10
|
||
GPIO_ResetBits(GPIOB, GPIO_Pin_12 | GPIO_Pin_13);
|
||
|
||
GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_USART3); //GPIOB10复用为USART3
|
||
GPIO_PinAFConfig(GPIOB, GPIO_PinSource11, GPIO_AF_USART3); //GPIOB11复用为USART3
|
||
//USART3
|
||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_10; //GPIOB11与GPIOB10
|
||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //复用功能
|
||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度50MHz
|
||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出
|
||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉
|
||
GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化PB10,PB11
|
||
|
||
USART_InitStructure.USART_BaudRate = 115200; //一般设置为 9600;
|
||
USART_InitStructure.USART_WordLength = USART_WordLength_8b; //字长为 8 位数据格式
|
||
USART_InitStructure.USART_StopBits = USART_StopBits_1; //一个停止位
|
||
USART_InitStructure.USART_Parity = USART_Parity_No; //无奇偶校验位
|
||
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
|
||
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收发模式
|
||
USART_Init(USART_E34, &USART_InitStructure); //初始化串口
|
||
USART_ClearFlag(USART_E34, USART_FLAG_TC | USART_FLAG_RXNE | USART_FLAG_IDLE);
|
||
USART_ITConfig(USART_E34, USART_IT_RXNE, ENABLE);
|
||
|
||
NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn; //串口1中断通道
|
||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //抢占优先级3
|
||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //子优先级3
|
||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能 aPcCmuTxBuf_1
|
||
NVIC_Init(&NVIC_InitStructure);
|
||
|
||
USART_Cmd(USART_E34, ENABLE); //使能串口
|
||
}
|
||
|
||
/*******************************************************************************
|
||
* @brief 串口3中断接收
|
||
* @param None
|
||
* @retval None
|
||
* @Note None
|
||
*******************************************************************************/
|
||
void USART3_IRQHandler(void) //串口1中断服务程序
|
||
{
|
||
if ((USART_GetITStatus(USART3, USART_IT_RXNE) != RESET))
|
||
{
|
||
u8 data = USART_ReceiveData(USART3);
|
||
if (ring_buffer_write(pE34_RX_BUF, data))
|
||
led_set_value(0, 1);
|
||
}
|
||
// USART_ClearITPendingBit(USART3, USART_IT_RXNE);
|
||
}
|
||
|
||
/*********************************END OF FILE**********************************/
|