/**
******************************************************************************
* 文件名程: nv32com.c
* 作 者: 东莞-邓凯哥
* 功 能: 通讯串口初始化
* 硬 件: NV32F101直流无刷电机测试板
* 说明:
* 软件版本 V1.0.1(2020/02/23 9:02)
******************************************************************************
**/
#include "nv32com.h"
/******************************************************************************
**函数信息 :RS232_config(void)
**功能描述 :RS232通讯初始化
**输入参数 :无
**输出参数 :无
******************************************************************************/
void RS232_Init()
{
UART_ConfigType sConfig;
sConfig.u32SysClkHz = BUS_CLK_HZ; //选择时钟源为总线时钟
sConfig.u32Baudrate = 19200; //设置波特率
UART_Init(UART1,&sConfig); //初始化串口1
UART_EnableRx(UART1);
UART_EnableRxBuffFullInt(UART1);
NVIC_SetPriority(UART1_IRQn,0);
NVIC_EnableIRQ(UART1_IRQn);
}
/******************************************************************************
**函数信息 :UART1_SendInt(uint8_t data[], uint32_t len)
**功能描述 :串口1中断方式发送数据
**输入参数 :data[]:数据 len:数据长度
**输出参数 :无
******************************************************************************/
uint8_t * u1UART_TXBuffer = 0;
uint32_t u1UART_TXCount = 0,
u1UART_TXIndex = 0;
uint8_t u1Readtime,u1Rxcounter,u1ReceBuf[128];
void UART1_SendInt(uint8_t data[], uint32_t len)
{
u1UART_TXBuffer = data;
u1UART_TXCount = len;
u1UART_TXIndex = 0;
UART_EnableTxBuffEmptyInt(UART1);
}
/******************************************************************************
**函数信息 :RS232_SendData(uint8_t data[], uint32_t len)
**功能描述 :RS232发送数据
**输入参数 :data[]:数据 len:数据长度
**输出参数 :无
******************************************************************************/
void RS232_SendData(uint8_t data[], uint32_t len)
{
UART1_SendInt(data,len);
}
#ifndef __NV32COM_H
#define __NV32COM_H
#include "NV101_uart.h"
#include "NV101_gpio.h"
#include "io_map.h"
extern uint8_t * u1UART_TXBuffer;
extern uint32_t u1UART_TXCount,u1UART_TXIndex;
extern uint8_t u1Readtime,u1Rxcounter,u1ReceBuf[128],u1SendBuf[128];
void RS232_Init(void);
void RS232_SendData(uint8_t data[], uint32_t len);
#endif
/**
******************************************************************************
* 文件名程: nv32timer.c
* 作 者: 东莞-邓凯哥
* 功 能: ETM1定时器初始化
* 硬 件: NV32F101直流无刷电机测试板
* 说明:
* 软件版本 V1.0.1(2020/04/03 18:02)
******************************************************************************
**/
#include "nv32timer.h"
/******************************************************************************
**函数信息 :ETM1_TIMER_Init(void)
**功能描述 :ETM1定时器初始化
**输入参数 :无
**输出参数 :无
******************************************************************************/
void ETM1_TIMER_Init()
{
uint32_t u32LoadValue0;
PIT_ConfigType sPITConfig1;
PIT_ConfigType *pPIT_Config1 =&sPITConfig1;
u32LoadValue0 = (3000-1); //50us 中断一次 主频60M
/* configure PIT channel 1, only enable ETMer */
pPIT_Config1->u32LoadValue = u32LoadValue0;
pPIT_Config1->bFreeze = FALSE;
pPIT_Config1->bModuleDis = FALSE; /*!< enable PIT module */
pPIT_Config1->bInterruptEn = TRUE;
pPIT_Config1->bChainMode = FALSE;
pPIT_Config1->bETMerEn = FALSE; //关闭PIT1定时器
PIT_Init(PIT_CHANNEL1, pPIT_Config1);
NVIC_SetPriority(PIT_CH1_IRQn,0);
PIT_ChannelClrFlags(1);
}
#ifndef __NV32TIMER_H
#define __NV32TIMER_H
#include "NV101_pit.h"
void ETM1_TIMER_Init(void);
#endif
/**
******************************************************************************
* 文件名程: main.c
* 作 者: 东莞-邓凯哥
* 功 能: 主程序
* 硬 件: NV32F101直流无刷电机测试板
* 说明:
* 软件版本 V1.0.1(2020/02/23 9:02)
******************************************************************************
**/
#include "common.h"
#include "nv32systick.h"
#include "nv32com.h"
#include "nv32timer.h"
#include "io_map.h"
/******************************************************************************
**函数信息 :int main(void)
**功能描述 :主函数入口
**输入参数 :无
**输出参数 :无
******************************************************************************/
int main (void)
{
Systick_Init(BUS_CLK_HZ/1000);
RS485_Init();
RS232_Init();
ETM1_TIMER_Init();
GPIO_PinInit(GPIO_PTE5, GPIO_PinOutput); //RUNLED
while(1)
{
}
}
/******************************************************************************
**函数信息 :SysTick_Handler(void)
**功能描述 :SysTick中断入口
**输入参数 :无
**输出参数 :无
******************************************************************************/
uint32_t sTick;
void SysTick_Handler()
{
delayTick++;
sTick++;
if(sTick==50)
{
RUNLED_TOGGLE();
sTick=0;
}
}
/******************************************************************************
**函数信息 :UART1_IRQHandler (void)
**功能描述 :UART1中断入口 RS232通讯
**输入参数 :无
**输出参数 :无
******************************************************************************/
void UART1_IRQHandler()
{
if(UART1->S1 & UART_S1_RDRF_MASK)
{
u1Readtime=0;
PIT_ChannelEnable(PIT_CHANNEL1);
u1ReceBuf[u1Rxcounter++]=UART1->D;
}
if(UART1->S1 & UART_S1_TDRE_MASK)
{
if(u1UART_TXIndex < u1UART_TXCount)
{
UART_WriteDataReg(UART1, u1UART_TXBuffer[u1UART_TXIndex]);
u1UART_TXIndex++;
}
else
{
UART_DisableTxBuffEmptyInt(UART1);
}
}
}
/******************************************************************************
**函数信息 :PIT_CH1_IRQHandler (void)
**功能描述 :PIT1中断入口
**输入参数 :无
**输出参数 :无
*****************************************************************************/
void PIT_CH1_IRQHandler(void)
{
u1Readtime++;
if(u1Readtime==35)
{
PIT_ChannelDisable(PIT_CHANNEL1);
RS232_SendData(u1ReceBuf, u1Rxcounter);
u1Rxcounter=0;
u1Readtime=0;
}
PIT_ChannelClrFlags(1);
}
|