初级会员

- 积分
- 72
- 金钱
- 72
- 注册时间
- 2015-11-14
- 在线时间
- 12 小时
|
15金钱
时钟和中断头文件
#ifndef _SYS_H_
#define _SYS_H_
#include "stm32f10x_flash.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x.h"
extern void RCC_Configurtion(void);
extern void NVIC_Configurtion(void);
#endif
时钟和中断配置
#include "sys.h"
时钟配置
void RCC_Configurtion(void)
{
SystemInit();
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3,ENABLE);
}
中断配置
void NVIC_Configurtion()
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_SetVectorTable(NVIC_VectTab_FLASH,0);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
/*USART3*/
NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 12;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
GPIO头文件
/*USART1 IO¿ú¶¨òå*/
#define USART1_PIN_GROUP GPIOA
#define USART1_RPIN_NUM GPIO_Pin_10
#define USART1_SPIN_NUM GPIO_Pin_9
/*USART1 IO¿ú¶¨òå*/
#define USART3_PIN_GROUP GPIOB
#define USART3_RPIN_NUM GPIO_Pin_11
#define USART3_SPIN_NUM GPIO_Pin_10
GPIO配置
void GPIO_Configurtaion(void)
{
GPIO_InitTypeDef GPIO_InitSturcture;
PWR_BackupAccessCmd(ENABLE);
RCC_LSICmd(DISABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
/*USART1*/
GPIO_InitSturcture.GPIO_Pin = USART1_RPIN_NUM;
GPIO_InitSturcture.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitSturcture.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(USART1_PIN_GROUP,&GPIO_InitSturcture);
GPIO_InitSturcture.GPIO_Pin = USART1_SPIN_NUM;
GPIO_InitSturcture.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitSturcture.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(USART1_PIN_GROUP,&GPIO_InitSturcture);
/*USART3*/
GPIO_InitSturcture.GPIO_Pin = USART3_RPIN_NUM;
GPIO_InitSturcture.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitSturcture.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(USART3_PIN_GROUP,&GPIO_InitSturcture);
GPIO_InitSturcture.GPIO_Pin = USART3_SPIN_NUM;
GPIO_InitSturcture.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitSturcture.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(USART3_PIN_GROUP,&GPIO_InitSturcture);
}
串口头文件
#define USART_Debug USART1
#define USART_458 USART2
#define USART_232 USART3
串口C文件
#include "usart.h"
//oˉêyÖØ¶¨ò壬¿éê1óà rintfoˉêy
#if 1
#pragma import(__use_no_semihosting) //±ê×¼¿aDèòaμÄÖ§3Öoˉêy
struct __FILE
{
int handle;
};
FILE __stdout; //¶¨òå_sys_exit()òÔ±üÃaê1óðëÖ÷»úÄ£ê½
_sys_exit(int x)
{
x = x;
} //ÖØ¶¨òåfputcoˉêy
int fputc(int ch, FILE *f)
{
while((USART_Debug->SR&0X40)==0); //Ñ-»··¢Ëí,Ö±μ½·¢Ëííê±Ï
USART_Debug->DR = (u8) ch;
return ch;
}
#endif
/******************************************************
oˉêyÃû3Æ£oUSART_Configuration(void)
oˉêy1|Äü£»3õê¼»ˉIO¿ú
êäèë2Îêy£»
·μ»Ø2Îêy£»
±¸ ×¢:
******************************************************/
void USART_Configguration(USART_TypeDef *USARTx,un32 baud)
{
USART_InitTypeDef USART_InitStructure;
USART_StructInit(&USART_InitStructure);
USART_DeInit(USARTx);
USART_InitStructure.USART_BaudRate = baud;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_Mode = USART_Mode_Rx|USART_Mode_Tx;
USART_Init(USARTx,&USART_InitStructure);
USART_ITConfig(USARTx,USART_IT_TC,DISABLE);
USART_ITConfig(USARTx,USART_IT_RXNE,DISABLE);
if(USARTx == USART1)
{
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
USART_ClearFlag(USART1,USART_FLAG_TC);
}
else if(USARTx == USART2)
{
USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);
USART_ClearFlag(USART2,USART_FLAG_TC);
}
if(USARTx == USART3)
{
print_debug("ÅäÖÃUSART3\r\n");
USART_ITConfig(USART3,USART_IT_RXNE,ENABLE);
USART_ClearFlag(USART3,USART_FLAG_TC);
}
USART_Cmd(USARTx,ENABLE);
}
/******************************************************
oˉêyÃû3Æ£ovoid Usart_Senddatas(USART_TypeDef* Usartx, un8* data, un16 len)
oˉêy1|Äü£»ÏòÖ¸¶¨′®¿ú·¢Ëíêy¾Y
êäèë2Îêy£»
·μ»Ø2Îêy£»
±¸ ×¢:
******************************************************/
void USART_Senddatas1(USART_TypeDef *USARTx,un8 *data,un16 len)
{
un16 i;
un16 time;
for(i=0; i<len; i++)
{
time = 0;
USART_SendData(USARTx,data);
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)== RESET && ++time <10000)
{
USART_GetFlagStatus(USARTx,USART_FLAG_TC);
}
USART_ClearFlag(USARTx,USART_FLAG_TC);
}
}
void USART_Senddatas(USART_TypeDef *USARTx,un8 *data,un16 len)
{
un16 i;
un16 time;
for(i=0; i<len; i++)
{
time = 0;
USART_SendData(USARTx,data);
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)== RESET && ++time <10000)
{
USART_GetFlagStatus(USARTx,USART_FLAG_TC);
}
USART_ClearFlag(USARTx,USART_FLAG_TC);
}
}
/******************************************************
oˉêyÃû3Æ£oun8 print_debug(const un8* format,...)
oˉêy1|Äü£»Ïòμ÷êÔ′®¿ú′òó¡êy¾Y
êäèë2Îêy£»
·μ»Ø2Îêy£»
±¸ ×¢:
******************************************************/
const un16 send_data_len = 100;
un8 send_data_buf[send_data_len+1];
un8 print_debug(const un8* format,...)
{
un16 lenth;
static va_list arg;
va_start(arg,format);
lenth = 0;
lenth += vsnprintf((char *)send_data_buf,send_data_len,(const char *)format, arg);
va_end(arg);
USART_Senddatas1(USART_Debug,send_data_buf,lenth);
return lenth;
}
主函数
int main(void)
{
RCC_Configurtion();
GPIO_Configurtaion();
NVIC_Configurtion();
USART_Configguration(USART_Debug,9600);
//print_debug("****************8\r\n");
USART_Configguration(USART_232,9600);
delay_init();
//print_debug("****************8\r\n");
while(1)
{
USART_Senddatas(USART_232,"123456789",9);
//print_debug("12345678911\r\n");
delay_ms(100);
}
}
哪位大神看下 哪里出问题了 串口3打死不出数据
|
|