学前班
最后登录1970-1-1
在线时间 小时
注册时间2016-10-11
|
#include"stm32f10x.h"
#include "main.h"
#define LED_PORT GPIOB
u8 LED_Blink = 0;
u8 shu;
/***************************************************************************//**
* Global variables
******************************************************************************/
GPIO_InitTypeDef GPIO_InitStructure;
void GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB| RCC_APB2Periph_GPIOC |RCC_APB2Periph_GPIOD |RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO,ENABLE);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 |GPIO_Pin_2 | GPIO_Pin_3;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 |GPIO_Pin_0 | GPIO_Pin_14 | GPIO_Pin_3 | GPIO_Pin_4;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 ;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 ;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_ResetBits( GPIOC, GPIO_Pin_4 ); //RI ENABLE
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15 ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
u16 jieshou[100];
u8 wei1=0;
u16 usarnum = 1;
void UART4_IRQHandler(void)
{
if(USART_GetITStatus(UART4, USART_IT_RXNE) != RESET)
{
usarnum=USART_ReceiveData(UART4);
jieshou[wei1] = usarnum;
wei1++;
}
}
void delay_ms(u16 nms)
{
u32 temp;
SysTick->LOAD = 9000*nms;
SysTick->VAL = 0X00;
SysTick->CTRL = 0X01;
do
{
temp = SysTick->CTRL;
}
while((temp&0x01) && (!(temp&(1<<16))));
SysTick->CTRL = 0x00;
SysTick->VAL = 0x00;
}
void gsm_usart_init( void )
{
USART_InitTypeDef USART_InitStructure ;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB1PeriphClockCmd( RCC_APB1Periph_UART4, ENABLE );
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init( GPIOC, &GPIO_InitStructure );
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init( GPIOC, &GPIO_InitStructure );
USART_InitStructure.USART_BaudRate = 115200;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
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( UART4, &USART_InitStructure );
USART_ITConfig( UART4, USART_IT_RXNE, ENABLE );
USART_Cmd( UART4, ENABLE );
}
void USART4_Puts(char * str)
{
while(*str)
{
USART_SendData(UART4, *str++);
/* Loop until the end of transmission */
while(USART_GetFlagStatus(UART4, USART_FLAG_TXE) == RESET);
}
}
void bsp_nvic_init( void )
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig( NVIC_PriorityGroup_2 );
NVIC_InitStructure.NVIC_IRQChannel = UART4_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init( &NVIC_InitStructure );
}
int main(void)
{
Usart1_Init();
bsp_nvic_init();
gsm_usart_init();
GPIO_Config();
//上电
GPIO_WriteBit(GPIOC, GPIO_Pin_6, Bit_SET);
delay_ms(500);
//开机
GPIO_WriteBit(GPIOC, GPIO_Pin_5, Bit_SET);
delay_ms(2000);
GPIO_WriteBit(GPIOC, GPIO_Pin_5, Bit_RESET);
//DTR置低
GPIO_WriteBit(GPIOC, GPIO_Pin_4, Bit_RESET);
USART4_Puts("AT\r");
delay_ms(5000);
USART4_Puts("AT\r");
delay_ms(3000);
while(1)
{
USART4_Puts("AT+GMR\r");
for(i = 0; i<10; i++)
{
printf("%x, ", jieshou[i]);
}
}
}
|
|