一、寄存器与基于固件库的编程方式差异:
寄存器:需要深入掌握芯片,需要更多的时间;
固件器:简单易上手,利用已有的芯片和资料依瓢画葫芦编程;
二、STM32的USART窗口通讯程序
本次学习是串口异步通讯,没有时钟信号,所以需要约定波特率解码,这里我们设置为115200,1位停止位,无校验位。
新建工程,在工程中添加系统已有的文件:
startup_stm32f10x_hd.s
再手动添加两个文件:
stm32f10x.h
main.c
链接: https://ebf-products.readthedocs.io/zh_CN/latest/.
完成之后,在进行一些必要的选项勾选:
按照以下文件进行配置:
按照下图进行代码修改:
代码如下:
int i=0;
uint8_t ucTemp[50];
void DEBUG_USART_IRQHandler(void)
{
if(USART_GetITStatus(DEBUG_USARTx,USART_IT_RXNE)!=RESET)
{
ucTemp[i] = USART_ReceiveData(USART1);
}
if(ucTemp[i] == '!')
{
if(ucTemp[i-1] == '2'&&ucTemp[i-2] == '3'&&ucTemp[i-3] == 'm'&&ucTemp[i-4] == 't'&&ucTemp[i-5] == 's'&&ucTemp[i-6] == ' ')
if(ucTemp[i-7] == 'p'&&ucTemp[i-8] == 'o'&&ucTemp[i-9] == 't'&&ucTemp[i-10] == 's')
{
printf("收 到!");
while(1);
}
}
i++;
}
代码如下:
#include "stm32f10x.h"
#include "bsp_usart.h"
void delay(uint32_t count)
{
while(count--);
}
int main(void)
{
USART_Config();
while(1)
{
printf("hello windows!\n");
delay(5000000);
}
}
打开串口调试,科技端口未显示:
安装端口驱动:
按照以下步骤调试:
再打开端口调试助手:
可见端口显示安装成功
结果如下: