目錄
1.發送一個位元組的函式
2.發送兩個位元組的函式
3.發送8位資料的陣列
4.發送字串
5.串口1發送字串
6.列印函式(printf)
7.發送一個數控制燈
1.發送一個位元組的函式
void Usart_SendByte(USART_TypeDef* pUSARTx,uint8_t data)
{
USART_SendData(pUSARTx, data);
while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TXE)==RESET);
}
2.發送兩個位元組的函式
void Usart_SendHalfWord(USART_TypeDef* pUSARTx, uint16_t data)
{
uint8_t temp_h,temp_l;//高8位,低8位
temp_h=(data&0xff00)>>8;//高8位
temp_l=data&0xff;//低8位
USART_SendData(pUSARTx,temp_h);
while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TXE)==RESET);
USART_SendData(pUSARTx,temp_l);
while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TXE)==RESET);
}
3.發送8位資料的陣列
uint8_t a[10]={1,2,3,4,5,6,7,8,9,10};
Usart_SendArray(USART1,a,10);
void Usart_SendArray(USART_TypeDef* pUSARTx, uint8_t *array,uint16_t num)
{
uint8_t i;
for(i=0;i<num;i++)
{
USART_SendData(pUSARTx,array[i]);
}
while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC)==RESET);
}
4.發送字串
void Usart_SendStr(USART_TypeDef* pUSARTx,uint8_t *str)
{
do
{
Usart_SendByte( pUSARTx,*(str+i));
i++;
}
while(*(str+i)!='\0');
while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC)==RESET);
}
5.串口1發送字串
void Uart1_SendStr(char*SendBuf)
{
while(*SendBuf)
{
while((USART1->SR&0X40)==0);//等待發送完成
USART1->DR = (u8) *SendBuf;
SendBuf++;
}
}
6.列印函式(printf)
//1.重定向C庫函式printf到串口,重定向后可使用printf函式
int fputc(int ch, FILE *f)
{
//發送一個位元組到串口
USART_SendData(USART1,(uint8_t)ch);//用哪個串口改為哪一個串口
//等待發送完畢
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);//用哪個串口改為哪一個串口
return (ch);
}
//2.重定向C庫函式scanf到串口,重定向后可使用scanf函式
int fgetc(int ch, FILE *f)
{
//等待串口輸入資料
while(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==RESET);//用哪個串口改為哪一個串口
return (int)USART_ReceiveData(USART1);//用哪個串口改為哪一個串口
}
7.發送一個數控制燈
uint8_t ch;
ch=getchar();
printf("ch=%c\n",ch);
switch(ch)
{
case'1':LED1=0;break;
case'2':LED2=0;break;
default:LED1=1,LED2=1;break;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/384399.html
標籤:其他
