嵌入式工程师诞生的第一步
本实例是直接在printf打印实例的基础上加的。
typedef enum
{
FAILED = 0,
PASSED = !FAILED
} TestStatus;
USART_InitType USART_InitStructure;
void RCC_Configuration(void);
void GPIO_Configuration(void);
TestStatus Buffercmp(uint8_t* pBuffer1, uint8_t* pBuffer2, uint16_t BufferLength);
int main(void)
{
RCC_Configuration();
GPIO_Configuration();
USART_InitStructure.BaudRate = 115200;
USART_InitStructure.WordLength = USART_WL_8B;
USART_InitStructure.StopBits = USART_STPB_1;
USART_InitStructure.Parity = USART_PE_NO;
USART_InitStructure.HardwareFlowControl = USART_HFCTRL_NONE;
USART_InitStructure.Mode = USART_MODE_RX | USART_MODE_TX;
USART_Init(USARTx, &USART_InitStructure);
USART_Enable(USARTx, ENABLE);
printf("
hello world!
");
while (1)
{
delay_ms(200);
GPIO_ResetBits(GPIOA,GPIO_PIN_0);
delay_ms(200);
GPIO_SetBits(GPIOB,GPIO_PIN_5);
delay_ms(200);
GPIO_ResetBits(GPIOB,GPIO_PIN_5);
delay_ms(200);
GPIO_SetBits(GPIOB,GPIO_PIN_6);
delay_ms(200);
GPIO_ResetBits(GPIOB,GPIO_PIN_6);
delay_ms(200);
GPIO_SetBits(GPIOB,GPIO_PIN_7);
delay_ms(200);
GPIO_ResetBits(GPIOB,GPIO_PIN_7);
delay_ms(200);
}
}
void RCC_Configuration(void)
{
GPIO_APBxClkCmd(RCC_APB2_PERIPH_GPIOA|RCC_APB2_PERIPH_GPIOB, ENABLE);
USART_APBxClkCmd(USARTx_CLK, ENABLE);
}
void GPIO_Configuration(void)
{
GPIO_InitType GPIO_InitStructure;
GPIO_ConfigPinRemap(GPIO_RMP_USART1,ENABLE);
GPIO_InitStructure.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.Pin = USARTx_RxPin;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(USARTx_GPIO, &GPIO_InitStructure);
GPIO_ConfigPinRemap(GPIO_RMP3_UART4, ENABLE);
}
TestStatus Buffercmp(uint8_t* pBuffer1, uint8_t* pBuffer2, uint16_t BufferLength)
{
while (BufferLength--)
{
if (*pBuffer1 != *pBuffer2)
{
return FAILED;
}
pBuffer1++;
pBuffer2++;
}
return PASSED;
}
int _put_char(int ch)
{
USART_SendData(USARTx, (uint8_t)ch);
while (USART_GetFlagStatus(USARTx, USART_FLAG_TXDE) == RESET)
{
}
return ch;
}
嵌入式工程师诞生的第一步
|