2021年10月26日,LED流光,STM32的USART系列通讯程序(搜索是充分的,目前不需要中断),利用Keil的软件模拟管脚的年表。

      最后更新:2021-10-30 14:20:53 手机定位技术交流文章

      一. 了解系列协议和RS-232标准,以及RS-232和TTL之间的区别;了解“USB/TTL tur 232”模块(例如,CH340芯片模块)的运行情况。

      二. 创造STM32发展环境

      1.安装jdk

      因为STM32CubeMX是写在爪哇的,所以必须安装jdk环境。
      与 Jdk 在线下载的链接 :
      https://www.oracle.com/java/technologies/javase-downloads.html

      安装 STM32CubeMX 。

      下载地址:
      https://www.st.com/en/development-tools/stm32cubemx.html
      安装过程
      1 运行并安装SetupSTM32CubeMX-4作为管理员。在这里插入图片描述
      简单地填好邮件的文件
      在这里插入图片描述
      在这里插入图片描述
      总是很不近人情
      在这里插入图片描述
      next,
      在这里插入图片描述
      等等,安装完成

      下一步安装硬件库 。

      运行CubeMX ,选择 Help->Magne 安装固件库
      在这里插入图片描述
      但一,六,0似乎过时了, 因此,这是我去的。 8,0安装。

      3.安装MDK5

      ARM处理器,特别是Cortex-M内核处理器的最佳编程工具是MDK(MDK(MDK控制器开发工具包) ) 。 我们不会下载这里的下载内容。 请改到 https://blog.org 。 我为这种不便向您道歉, csdn 。 此文章是我们特别报导澳大利亚的部分内容 。 net/qq_ 43279579579/ article/ details/10880667 。

      三、流水灯

      1.创建一个工程

      打开 Keil, 然后选择新的视野工程 。
      在这里插入图片描述
      选择要使用的 stm32F103R8 芯片 。
      在这里插入图片描述

      2.编辑代码

      在这里插入图片描述

      代码如下:

      已经写入一个宏以存储 stm32 内存映射图 。
      #define PERIPH_BASE ((unsigned int)0x40000000)//AHB
      #define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)
      #define GPIOA_BASE (APB2PERIPH_BASE + 0x0800)
      /GPIOA_BASE=0x400+0x100+0x100+0x00800=0x40010800,GPIOA基准地址
      #define GPIOB_BASE (APB2PERIPH_BASE + 0x0C00)
      /GPIOB_BASE=0x400+0x100+0x100+0x0C00=0x40010C00,GPIOB基准地址
      #define GPIOC_BASE (APB2PERIPH_BASE + 0x1000)
      /GPIOC_BASE=0x400+0x100+0x100+0x100=0x4001100,GPIOC基准地址
      #define GPIOD_BASE (APB2PERIPH_BASE + 0x1400)
      /GPIOD_BASE=0x400+0x100+0x100+0x1400=0x4001400,GPIOD基准地址
      #define GPIOE_BASE (APB2PERIPH_BASE + 0x1800)
      /GPIOE_BASE=0x400+0x100+0x100+0x0800=0x4001800GPIOE基准地址
      #define GPIOF_BASE (APB2PERIPH_BASE + 0x1C00)
      /GPIOF_BASE=0x400+0x100+0x100+0x0800=0x40011C00 GPIOF基准地址
      #define GPIOG_BASE (APB2PERIPH_BASE + 0x2000)
      /GPIOG_BASE=0x400+0x100+0x100x0x0800=0x4001200,GPIOG的基本地址
      #define GPIOA_ODR_Addr (GPIOA_BASE+12) //0x4001080C
      #define GPIOB_ODR_Addr (GPIOB_BASE+12) //0x40010C0C
      #define GPIOC_ODR_Addr (GPIOC_BASE+12) //0x4001100C
      #define GPIOD_ODR_Addr (GPIOD_BASE+12) //0x4001140C
      #define GPIOE_ODR_Addr (GPIOE_BASE+12) //0x4001180C
      #define GPIOF_ODR_Addr (GPIOF_BASE+12) //0x40011A0C
      #define GPIOG_ODR_Addr (GPIOG_BASE+12) //0x40011E0C

      #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))
      #define MEM_ADDR(addr) *((volatile unsigned long *)(addr))

      #define LED0 MEM_ADDR(BITBAND(GPIOA_ODR_Addr,8))
      //#define LED0 *((volatile unsigned long *)(0x422101a0)) //PA8
      / 定义了类型类型类别名。
      typedef struct
      {
      volatile unsigned int CR;
      volatile unsigned int CFGR;
      volatile unsigned int CIR;
      volatile unsigned int APB2RSTR;
      volatile unsigned int APB1RSTR;
      volatile unsigned int AHBENR;
      volatile unsigned int APB2ENR;
      volatile unsigned int APB1ENR;
      volatile unsigned int BDCR;
      volatile unsigned int CSR;
      } RCC_TypeDef;

      #define RCC ((RCC_TypeDef *)0x40021000)
      / 定义了类型类型类别名。
      typedef struct
      {
      volatile unsigned int CRL;
      volatile unsigned int CRH;
      volatile unsigned int IDR;
      volatile unsigned int ODR;
      volatile unsigned int BSRR;
      volatile unsigned int BRR;
      volatile unsigned int LCKR;
      } GPIO_TypeDef;
      /GPIOA指GPIOA_BASE,其数据类型为GPIO_TypeDef。
      #define GPIOA ((GPIO_TypeDef *)GPIOA_BASE)

      void LEDInit( void )
      {
      RCC->APB2ENR|=1<<2; //GPIOA 时钟开启
      GPIOA->CRH&=0XFFFFFFF0;
      GPIOA->CRH|=0X00000003;
      }

      //粗略延时
      void Delay_ms( volatile unsigned int t)
      {
      unsigned int i,n;
      for (n=0;n<t;n++)
      for (i=0;i<800;i++);
      }

      int main(void)
      {
      LEDInit();
      while (1)
      {
      LED0 = 0;// Light 光线二极管
      延迟_ms( 500); // 延迟
      LED0=1;//LED照明
      延迟_ms( 500); // 延迟
      }
      }

      3. 开始调试设置

      1点击“塔塔组织”
      在这里插入图片描述
      在这里插入图片描述

      4.开始调试

      首先开始调试, 然后使用调试工具 。

      在这里插入图片描述
      在这里插入图片描述

      五. 使用立方体MX生成必要的代码。

      请前往博客了解更多信息:
      https://blog.csdn.net/junseven164/article/details/120807138
      下面为我的部分截图
      在这里插入图片描述
      在这里插入图片描述
      下面的图像将移动电话的内容描述为效果图。
      在这里插入图片描述
      请添加图片描述

      四. 世界! 建立一个基于MDK的STM32编集程序。

      1、USART介绍

      环球同步非同步传输器(USART)是一个序列通信装置,它允许与外部设备进行全时数据交换,同时保持灵活性。 与USART不同,还有UART,它以USART为基础,但被切断用于同步通信,但非同步通信除外。 同步和灵敏之间的根本对比是通信不需要外部时钟输出,但我们通常使用序列通信。
      一般来说,序列连接以框架格式发送数据,即带起始信号、数据电文、截断信息,也许还有检查信息的框架框架传输。 USART是专门为这些传输参数而设计的,而不仅仅是一个单一参数值,其中许多参数可以自定义,而只是为了改进兼容性。

      2、实验要求

      (1) 规定波特费率为115 200美元,一次中途停留,不校准。
      2) STM32系统不断将“ello windows”传送至顶级计算机(win 10)。 上层机接收器可选择使用“单调试辅助器”或自编程序。
      (3) 当输入的计算机传输“停止,stm32”,stm32停止发送时。

      3、代码如下

      4、软件选取

      1. 野火多功能调试助手
      2、CH34_Install_Windows_v3_4
      3、mcuisp
      请继续下载 CH34_Install_Windows_v3_4。在这里插入图片描述
      这个博客试图在此提交, 但发现这个平台已经拥有这个资源, 更多资料可在博客上找到: https://blog.com. I'm sorry, csdn.
      在这里插入图片描述
      请添加图片描述
      野火下载助手看这儿:https://www.firebbs.cn/forum.php?mod=viewthread&tid=29790&extra=
      在这里插入图片描述
      在这里插入图片描述
      打开mcuisp
      在这里插入图片描述
      开始编程
      在这里插入图片描述
      将 RTS 高端重新定位为启动装入器( 将核心板更改为 10) 。
      在这里插入图片描述

      V. Keil的系列输出波观测

      在没有振荡器的情况下,可使用管子脚的时间序列波形来模仿Keil软件的逻辑分析功能,允许动态调试和代码故障区域的位置。该功能用于检查串口的波形输出,确定波形代表的正确时间序列状态,以及真正的低和低水平转换周期(LED闪烁周期)。
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      完成

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/12508.html

          热门文章

          文章分类