目录
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;
}
版权声明:本文为CSDN博主「菜鸟小白99」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/asdfghjkl9514/article/details/121974195
暂无评论