一个简单的工程搭建好之后,进一步就是了解里面的内容,也就是学习进入正轨。打开我之前新建的工程,主要调用的几个函数就是今天学习的内容,接下来我就讲解一下那些内容。
一、初始化时钟
这里的“时钟配置”函数在bsp.c文件下面;
使能了GPIOA --- GPIOD时钟,这里更加自己使用的IO进行配置(该工程实际只使用GPIOC)。
二、基本输入输出引脚配置
这里的“基本输入输出引脚配置”函数同样在bsp.c文件下面;
初始化GPIO, 包含端口引脚、频率、输出类型。
三、底层初始化
这里的“底层初始化”函数同样在bsp.c文件下面;
以后的底层初始化代码还会增加,这里调用上面的两个函数接口。
四、主函数应用
这里的“主函数”接口在main.c文件下面;
这里就是入口函数(其实之前还调用了一些接口,我们这里暂时不管,以后来分析)。
关键字:STM32 控制IO 基本配置
引用地址:
STM32控制IO基本配置的讲解
推荐阅读最新更新时间:2024-11-13 01:33
Python 和OpenMV如何玩转 STM32 MCU
如今网络边缘侧的机器学习现状如何?哪些工具可以帮助工程师收集数据并执行推断运算?在哪里可以找到ST MEMS,它们对现实生活中的产品有哪些影响?本文是我们即将举行的STM32全国研讨会系列的第二篇专题文章。在第14届STM32全国研讨会上,我们将通过应用演示、产品展示以及工程师与观众互动回答问题的方式,来与蝶粉社区近距离交流。在STM32全国研讨会专题系列报道第一部分我们着重介绍了云连接方面的用例,如一款新的智能门铃功能演示,还介绍了工业和数据安全相关应用。 今天,我们将重点探讨人工智能、计算以及感知技术。 人工智能与计算 Qeexo 和STM32Cube.AI 当今边缘机器学习解决方案的种类越来越多,本届STM32全国
[嵌入式]
STM32 USB数据接收与数据发送程序流程分析
既然学习了USB,那就必须的搞懂USB设备与USB主机数据是怎么通讯的。这里主要讲设备端,因为我们的代码是做USB设备用的。 我们需要必须要定义了USB中断。起始在STM32的中断向量表中给USB两个中断,我们可以在stm32f10x.h中找到这两个中断: USB_HP_CAN1_TX_IRQn = 19, /*! USB Device High Priority or CAN1 TX Interrupts */ USB_LP_CAN1_RX0_IRQn = 20, /*! USB Device Low Priority or CAN1 RX0 Interrupts */ 这两个中断是USB与CAN复用的中断,
[单片机]
STM32之USART的基本知识点
USART又称为通用同步异步收发器,是利用分数比特率发生器提供宽范围的比特率选择。STM32F10x系列的芯片都提供了功能比较强大的USART串口,基本上的串口功能都可以通过硬件来实现。 USART具有以下比较典型的特征: 1.全双工异步通信; 2.单线半双工通信; 3.发送方为同步传输提供时钟; 4.可配置的使用DMA的多缓冲器通信—在SRAM中利用集中式DMA缓冲接受/发送; 5.单独的接收器和发送器使能端; 6.检测标志,接受缓冲器满,发送缓冲器空,传输结束标志; 7.4个错误检测标志:溢出错误,噪音错误,帧错误,检验错误; 8.10带标志的中断源等。 任何USART双向通信都至少需要两个脚:接受数据输入(RX)和发送数据输
[单片机]
stm32之USART学习
首先,我是看着这位博主的文章受到的启发,进而加深了自己对USART的理解。下面是自己改装并实验过的程序。 原文:http://www.cnblogs.com/greatwgb/archive/2011/07/28/2119350.html 1. 串口的基本概念 在STM32的参考手册中,串口被描述成通用同步异步收发器(USART),它提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信,也支持LIN(局部互联网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS
[单片机]
STM32之学习笔记--串口通信
在基础实验成功的基础上,对串口的调试方法进行实践。硬件代码顺利完成之后,对日后调试需要用到的printf重定义进行调试,固定在自己的库函数中。 b) 初始化函数定义: void USART_Configuration(void); //定义串口初始化函数 c) 初始化函数调用: void UART_Configuration(void); //串口初始化函数调用 初始化代码: void USART_Configuration(void) //串口初始化函数 { //串口参数初始化 USART_InitTypeDef USART_InitStructure; //串口设置恢复默
[单片机]
STM32单片机-ID操作
每一片 STM32 芯片内部拥有一个独一无二的 Unique Device ID, 96 Bit. 这个 ID 号可以提供给开发者很多优越的功能, 例如: 1. 可以把 ID 做为用户最终产品的序列号,帮助用户进行产品的管理。 2. 在某些需要保证安全性的功能代码运行前,通过校验此 ID,保证最终产品的某些功能的安全性。 3. 用 ID 配合加解密算法,对芯片内部的代码进行加加密,以保证用户产品的安全性和不可复制性。 这项功能相信对那些不希望自己的产品不被别人抄袭来说肯定是个非常不错的。 下面我就先大家介绍如何读出这个 ID: 这个 ID 号是放在片内 Flash 中的固定的位置,直接读取出来就行了. 96 位的独特 ID 位
[单片机]
结合STM32给大家描述一下单片机常见的划分区域
编排 | strongerHuang 看到有小伙伴在讨论关于单片机内存的话题,今天就结合STM32给大家描述一下常见的划分区域。 在一个STM32程序代码中,从内存高地址到内存低地址,依次分布着栈区、堆区、全局区(静态区)、常量区、代码区,其中全局区中高地址分布着.bss段,低地址分布着.data段。 总的分布如下所示: 内存高地址 栈区 堆区 .bss段 .data段 常量区 内存低地址 代码区 一、栈区(stack) 临时创建的局部变量存放在栈区。 函数调用时,其入口参数存放在栈区。 函数返回时,其返回值存放在栈区。 const定义的局部变量存放在栈区。 2、堆区(heap) 堆区用于存放程序运行
[单片机]
因STM32移植而引发的两个小疑问
有STM32用户将基于STM32F0芯片的代码移植到STM32F4系列时遇到了些麻烦。其中有个问题跟中断处理有关。有个中断服务程序代码在STM32F0芯片里运行正常,移植到STM32F4芯片并使用同样的程序代码却明显异常,感觉每次中断都进了两次。 经过他一番网上搜索,大致找到了问题原因和解决办法。原因就是他在中断服务程序里做中断请求标志清零的代码放在服务程序的结尾处了,将其挪至服务程序的入口处就可以了。 问题是解决了,但依然还是有两个小疑问如鲠在喉。 第一个疑问,为什么同样的操作在F0系列正常,而在F4系列却异常呢?仅仅是因为F4系列跑得快? 其实,这里的主要原因是内核差异导致的。STM32F0系列芯片是基于ARM Cor
[单片机]