1.目的
写这个程序的主要目的就是实现通过STM32的串口1循环发送十六位数组至上位机。因为正点原子的例程中只能发送单个8位数据至上位机,网上关于这个方面的资料也非常的少,所以,如果有这方面的需求要自己封装函数来达到效果。
2.程序
话不多说,直接上程序
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
void Usart_SendHalfWord(USART_TypeDef * pUSARTx, uint16_t ch)
{
uint8_t High, Low;
High = (ch&0XFF00)>>8;
Low = ch&0XFF;
USART_SendData(pUSARTx,High);
while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);
USART_SendData(pUSARTx,Low);
while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);
}
void MyUSART_SendArr(uint16_t *str,uint8_t count)
{
uint8_t i=0;
for(i=0;i<count;i++)
{
Usart_SendHalfWord(USART1,*(str+i));
}
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
}
int main(void)
{
uint16_t ch[25]={264,52,53,54,54,7,7,8,52,5,4,4,7,5,3,5,5,0,5,0,7};
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init(115200);
LED_Init();
KEY_Init();
while(1)
{
MyUSART_SendArr(ch,19);
}
}
这个程序是在正点原子的库函数版本实验4串口通讯基础上修改的,我用的板子是正点原子推出的精英版F1,最后与电脑通讯(XCOM软件)得到了想要的结果。
3.总结
这个问题困扰了几天,终于解决了,本着开源的想法跟大家一起分享,希望对大家有帮助哦 written by:亦舒斋 QQ:1464475872 最后给大家推荐个漂亮妹妹————抖音ID:杀猪饲料 大家快去关注吧!
|