刚入手stm32,想从最简单的控制io口做起,仿照历程,书写了一个控制PA15口持续输出低电平的程序,可是无论怎么样就是不能将IO口拉低,始终输出3.3V,那个纠结啊!后来仔细问了同学才明白原因:
PA15为复用端口,作者为了在学员使用JLINK调试时产生不必要的麻烦,在包含某些system文件时已经将该口的复用功能默认打开了。
所以在软件编写的时候要先禁用JTAG功能才能把这个IO口当成普通IO口使用。也就是在程序开始的时候加上这一句话:JTAG_Set(JTAG_SWD_DISABLE);
因为stm32功能强悍,但引脚有限,所以大部分的引脚都有复用功能,所以使用IO口是要特别注意这点:例如某些IO与LCD功能复用,所以大家在使用 LCD同时需要控制IO口电平时,需要先把复用功能关闭,设置完了之后再打开该IO口特殊功能。当然有些复用功能还是默认关闭的,也就是说IO口可以直接使用,而不需要在之前加禁用复用功能的语句。
关键字:stm32 自由控制 io口
引用地址:
关于stm32自由控制io口的笔记
推荐阅读最新更新时间:2024-03-16 14:48
STM32闹钟的一个进阶使用
概述: 在使用STM32的过程中,我们在项目中可能经常会用到它的闹钟功能,但是对于刚开始接触STM32闹钟时,我就是直接设置一个闹钟,然后等待中断,有时候如果有两个闹钟,我们可以用ALARM A和B,但是有4个5个或者更多的闹钟设置,这时就不知道怎么办了。我就根据我的使用需求想了一个办法(只涉及几点几分,不考虑年月日及周几),如果你也有这样的需求,可以直接使用,如果不是,也希望可以给你留下一个思考的方向。 思路: 因为我的需求是每天的几点几分有一个闹钟,然后去处理,所以我的思路也很简单,就是将所有闹钟都注册到一个数组里面,然后换算为分钟从小到大进行排序,再根据当前时间去选择我下一个要设置的闹钟是哪一个,比如我已经注册了3个闹
[单片机]
STM32开发笔记9: STM32CubeF0固件架构
单片机型号:STM32CubeF0 本文介绍STM32CubeF0固件架构。 STM32CubeF0固件架构图如下图所示。 1、Board Support Package (BSP) This layer offers a set of APIs relative to the hardware components in the hardware boards (such as LCD, Audio, microSD and MEMS drivers). It is composed of two parts: • Component This is the driver
[单片机]
stm32GPIO的复用
STM32基本上每个引脚都有8种配置模式: 1)浮空输入 2)带弱上拉输入 3)带弱下拉输入 4)模拟输入 5)推挽输出 6)开漏输出 7)复用推挽输出 8)复用开漏输出 通常有5种方式使用某个引脚功能,它们的配置方式如下: 1)作为普通GPIO输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时不要使能该引脚对应的所有复用功能模块。 2)作为普通GPIO输出:根据需要配置该引脚为推挽输出或开漏输出,同时不要使能该引脚对应的所有复用功能模块。 3)作为普通模拟输入:配置该引脚为模拟输入模式,同时不要使能该引脚对应的所有复用功能模块。 4)作为内置外设的输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,
[单片机]
关于stm32 hal 库 iic 一直是 busy 问题
最近在用st hal iic 发现 MX_I2C1_Init(); 后 iic 就处于BUSY状态 代码跟踪后发现 具体到 HAL_I2C_MspInit 中 __HAL_RCC_I2C1_CLK_ENABLE(); 后 IIC模块就处到busy状态。 具体问题找到 ,修改如下,轻松解决问题!! 原来代码: void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle) { GPIO_InitTypeDef GPIO_InitStruct; if(i2cHandle- Instance == I2C1) { /* USER CODE BEGIN I2C1
[单片机]
STM32之ADC原理
ADC的位数决定了ADC的精度,有8位的,12位的,16位的等。 还有一个很重要的参数就是转换时间。 ST M32f103RBT6有2个ADC 控制器 。128KFlash,20KRAM 每一个ADC控制器都有多个通道,例如ADC1的外部通道有16个,可以理解为有一个 开关 分别连接各个通道。 每个通道的采样间隔和采样时间都可以设置。 三。ADC各通道与IO管脚对应表 一般负参考电压接地,正参考电压接 3.3V 。 模拟输入电压不能超过3.3V,否则输入 引脚 可能被烧毁。 ADC框图 Vref+连接到VDDA,Vref-连接到VSSA。 最多4个通道连接到注入通道,最多16个通道连接到规则通道。 什么
[单片机]
STM32中的时钟
下面就以STM32开发板中最常见的STM32F103系列芯片的时钟为例,介绍一下STM32中的时钟。 时钟作用 说到时钟,你一定会问,这是用来计时的吗?没错,是用来计时的,但这只是它在STM32中的一项功能而已,下面就为你列出了时钟的具体功能。 计时作用(供给某些计数器统计时间); 控制时序(串口数据的传输,只能一位一位的传输); 控制信号(将时钟的上升下降沿作为独特的控制标志)。 STM32时钟模型 STM32内部时钟树 时钟源 时钟源就是产生时钟的电路啦,我们来一起看一下,什么样的电路可以产生时钟。 STM32中的时钟源分为以下五种: 低速内部时钟LSI:频率为40kHz ; 高速内部时钟HSI :频率为8MH
[单片机]
STM32笔记---RTC的初始化
RTC这东西晕晕的,因为一个模块涉及到了RTC,BKP,RCC多个模块,之间的关系让人有点模糊 入门的知识请大家看手册,我来总结: 总之,RTC只是个能靠电池维持运行的32位定时器over! 所以,使用时要注意以下问题: 1.上电后要检查备份电池有没有断过电。如何检查? 恩,RTC的示例代码中已经明示: 往备份域寄存器中写一个特殊的字符,备份域寄存器是和RTC一起在断电下能保存数据的。 上电后检查下这个特殊字符是否还存在,如果存在,ok,RTC的数据应该也没丢,不需要重新配置它 如果那个特殊字符丢了,那RTC的定时器数据一定也丢了,那我们要重新来配置RTC了 这个过程包括时钟使能、RTC时钟源切换、设置分频系数等等,这个可以
[单片机]
uclinux下stm32开发环境搭建
什么是uclinux uclinux表示micro-control linux.即“微控制器领域中的Linux系统”,是Lineo公司的主打产品,同时也是开放源码的嵌入式Linux的典范之作。uCLinux主要是针对目标处理器没有存储管理单元MMU(Memory Management Unit)的嵌入式系统而设计的。它已经被成功地移植到了很多平台上。由于没有MMU,其多任务的实现需要一定技巧。 uClinux是嵌入式Linux领域非常重要的分支,已成功应用于路由器、机顶盒、PDA等领域,与标准Linux在内存管理方面有着本质的区别。 uCLinux是一种优秀的嵌入式Linux版本,是micro-Controll
[单片机]