推荐阅读最新更新时间:2024-11-10 10:56
关于stm32中的GPIO引脚初始化的程序讲解及相关知识拓展介绍
以下是我要讲解的GPIO初始化程序段,尽量讲解小白学习过程中不解的每一个方面。 代码讲解时我是根据一个程序边讲边跳入它的声明或是定义中讲解的。 voidLED_GPIO_Config(void) { /*定义一个GPIO_InitTypeDef类型的结构体*/ 1. GPIO_InitTypeDef GPIO_InitStructure; /*开启GPIOF的外设时钟*/ 2. RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE); /*选择要控制的GPIOF引脚*/ 3. GPIO_InitStructure.GPIO_Pin =GPIO
[单片机]
STM32 串口中断总结
本文以USART1为例,叙述串口中断的编程过程。 1、先来讲述一下在应用串口中断时涉及到的一些库文件。 首先对于STM32外设库文件的应用编程,misc.c和stm32f10x_rcc.c是肯定要添加到。 接下来就是我们要用到的相关外设了。毫无疑问,串口文件stm32f10x_usart.c是必须的。串口通信是对通用GPIO端口引脚的功能复用,所以还需要stm32f10x_gpio.c文件。另外,因为有中断的产生,所以中断文件stm32f10x_it.c也是必要的,当然这个文件一般和main.c放在一个文件夹下(一般习惯为User文件夹),因为我们的中断响应函数是要在里面自己编写的。 当然还有其他的基本必须文件如系统配置文件等在这
[单片机]
STM32 互补输出和死区插入
搞过全桥电机驱动的都知道控制死区时间的重要性,一般解决方案是搭建电路控制死区时间或直接使用全桥驱动芯片。 而STM32拥有两个高级定时器,可以直接输出具有调节死区时间的PWM。 现以TIM1通道1输出占空比为50%,死区时间为5us来做个例子。 首先TIM1通道1的PWM输出端口为PA8,互补输出通道为PB13,所以需要开启相应模块的时钟: RCC- APB2ENR|=1 11; //TIM1时钟使能 RCC- APB2ENR|=1 2; //GPIOA时钟使能 RCC- APB2ENR|=1 3; //GPIOB时钟使能 将需要使用的PA8,PB13口设
[单片机]
对于STM32别名区的理解
1. 什么是位段、位带别名区? 2. 它有什么好处? 答1: 是这样的,记得MCS51吗? MCS51就是有位操作,以一位(BIT)为数据对象的操作, MCS51可以简单的将P1口的第2位独立操作: P1.2=0;P1.2=1 ; 就是这样把P1口的第三个脚(BIT2)置0置。 而现在STM32的位段、位带别名区就为了实现这样的功能。 对象可以是SRAM,I/O外设空间。实现对这些地方的某一位的操作。 它是这样的。在寻址空间(32位地址是 4GB )另一地方,取个别名区空间,从这地址开始处,每一个字(32BIT) 就对应SRAM或I/O的一位。
[单片机]
使用Keil MDK以及标准外设库创建STM32工程
1.1 使用Keil MDK以及标准外设库创建STM32工程 通过上一节对标准外设库的介绍,想必各位读者对标准外设库已经有了基本的认识,然而由于标准外设库中文件众多,很多初学者在开始很长一段时间内甚至都无法完全自己建立一个工程,很多人只是依赖标准外设库或给定的工程模板。本节就介绍怎样利用Keil MDK开发环境和标准外设库来搭建自己的工程。 建立一个基于标准外设库其实并不复杂,网络上也有很多关于怎样在Keil MDK下建立工程的教程,方法也各异,本节所介绍的方法本着少改动、便于使用、方便更换器件等原则,给大家介绍怎样在Keil中创建一个工程,并以一个最简单的例子来说明怎样下载和调试程序。 1.1.1 开发工具与开发环境 1. 软件
[单片机]
基于STM32平台的CoAP Server方案
0.前言 CoAP是受限制的应用协议(Constrained Application Protocol)的代名词。在当前由PC机组成的世界,信息交换是通过TCP和应用层协议HTTP实现的。但是对于小型设备而言,实现TCP和HTTP协议显然是一个过分的要求。为了让小设备可以接入互联网,CoAP协议被设计出来。CoAP是一种应用层协议,它运行于UDP协议之上而不是像HTTP那样运行于TCP之上。CoAP协议非常小巧,最小的数据包仅为4字节。 本文将使用STM32平台实现一个CoAP Server Demo。本文将详细说明如何使用STM32这样的低成本MCU实现CoAP Server的步骤,本文试图说明CoAP协议虽然很 年轻 ,
[单片机]
STM32库函数void USART_SendData()的缺陷和解决方法
简介:本文主要谈到了STM32库函数void USART_SendData()存在的一些问题,针对这些问题提到了3个解决方案,一起来看看。 2.1问题及现象 使用USART_SendData()函数非连续发送单个字符是没有问题的;当连续发送字符时(两个字符间没有延时),就会发现发送缓冲区有溢出现象。若发送的数据量很小时,此时串口发送的只是最后一个字符,当发送数据量大时,就会导致发送的数据莫名其妙的丢失。 如: for(TxCounter = 0;TxCounter RxCounter; TxCounter++) USART_SendData(USART1, RxBuffer ); 2.2原因 此API
[单片机]