zoukankan      html  css  js  c++  java
  • stm32串口通讯

    基于寄存器与基于固件库的stm32 LED流水灯例子的编程方式有什么差异。

    ​ 使用固件库,目前比较多的例程是使用固件库编写的。官方的例子也都采用固件库方式。特点就是简单,易于理解,资料多。如果你没有CortexM系列内核的开发基础,建议从固件库开始玩起。等有一定基础,或是特别需要时再用寄存器。

    ​ 使用寄存器,想要深入理解CortexM3内核或是需要为了获得更好的可移植性,学习寄存器编程会比较有帮助。但是从专业的角度上看,寄存器更贴近底层,对外设的工作原理和运行机理会有更深的理解


    STM32的USART窗口通讯程序,要求:

    1)设置波特率为115200,1位停止位,无校验位。

    2)STM32系统给上位机(win10)连续发送“hello windows!”,上位机接收程序可以使用“串口调试助手“,也可自己编程。

    3)当上位机给stm32发送“Stop,stm32”后,stm32停止发送。

    步骤

    1.配置驱动

    2.打开代码文件

    3.修改代码

    stm32f10x_it.c

    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++;
    }
    
    

    main.c

    #include "stm32f10x.h"
    #include "bsp_usart.h"
    
    
    void delay(uint32_t count)
    {
    	while(count--);
    }
    int main(void)
    {	
      USART_Config();
      while(1)
    	{	
    		printf("hello windows!
    ");
    		delay(5000000);
    	}	
    }
    
    
    

    2.烧录程序
    2.1连接开发板

    2.2打开串口下载器选择刚编译生成的.hex文件,然后进行烧写

    2.3打开野火多功能调试助手查看结果

  • 相关阅读:
    ABP 异常
    Vmware中安装的Ubuntu不能全屏问题解决
    centos7.4 文件权限
    webpack 入门(1)
    webpack(2) 概念
    centos7.4 rpm命令
    centos7.4 which、whereis、locate的使用
    centos7.4 find命令
    centos7.4 lsof用法
    centos7.4 用户和组的管理
  • 原文地址:https://www.cnblogs.com/Zzxin/p/14091348.html
Copyright © 2011-2022 走看看