在学习STM32中的过程中,经常会遇到“高电平有效”,“低电平有效”等字眼,初看时很多时候就会从字面上理解,认为高电平有效的意思就是有效电平是高电平,低电平有效的意思就是有效电平是低电平的意思。而实际上,这样的理解是有误的。下面咱们以STM32的定时器中输出比较通道为例:
这幅图实际上就是一个pwm波产生的过程,对定时器不了解的可以去查阅相关手册,现在我们先看图中标号1的输出模式控制器,这里模式是指pwm模式,他的意思就是可以通过配置寄存器TIMx_CCMR1的OC1M两位,来选择pwm的模式,但是关于模式选择,手册中有这样一句话:在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。
红色字体告诉我们:OCREF为无效电平时为低电平,OCREF为有效电平时就是高电平。
再看标号2: 它的作用是选择输出极性。如果TIMx_CCER的CC1P位为0则高电平有效,否则低电平有效。这个高电平有效是什么意思呢?就是对于选择器来说,高电平有效,如果OCREF为高电平,那么这个选择器的门就会打开,让该信号进入 ,并“激活”该选择器, 之后选择器才会产生信号来激活后面的输出使能电路驱动OC1,让其在OC1上产生有效电平(也就是OC1上产生高电平)。
通过上面的分析机会发现,高电平有效意思是说,若信号为高电平,那么对相应的控制器来说才有效,才能激活该控制器的相关功能。
总结几个关键词:有效电平:高电平
无效电平:低电平
高电平有效:高电平可以使能相应功能
低电平有效:低电平可以使能相应功能
关键字:STM32 高电平有效 低电平有效
引用地址:
STM32中关于高电平有效,低电平有效的一点理解
推荐阅读最新更新时间:2024-03-16 16:27
用STM32CubeIDE软件实现STM32外部中断实例
本文用STM32CubeIDE软件实现STM32外部中断实例。 新建工程 “File”-“New”-“STM32 Project”。 输入芯片型号STM32F103ZE。 选择相应封装,下一步。 填写项目名,选择工程位置,下一步。 配置时钟、调试模式 选择高速外部时钟。 HCLK总线时钟处输入72,回车,配置使用最高时钟频率。 调试模式选择串行,方便下载程序。 配置管脚外设 本实例中用到了LED1与KEY_LEFT,找到相应电路图。 可见LED1对应PC0管脚,低电平点亮。按键K1对应PE2管脚,低电平有效。 PC0配置为GPIO_Output,GPIO输出模式 PE2配置为GPIO_EX
[单片机]
stm32单片机进入休眠模式后无法下载程序等问题的解决
利用stm32单片机的休眠模式,使单片机间歇的休眠从而实现低功耗的目的。往往会出现进入休眠后无法唤醒,导致下一次程序烧不进去。通常的解决办法是:一般的开发板或单片机最小系统都会有复位键,按住复位键,点下载,然后松开复位键即可。 我遇到的问题是:误入了stm32(STM32L051C6T6)的STOP模式,又没有写入相应的唤醒方法,导致后续的程序不能下载。使用MDK5 点击load时总会出现No target connected。自己设计的最小系统又没有加入复位键。。。 有以下几种解决办法: 1、可以将单片机的NRST引脚引出来,外接复位键。(关于引脚查看可用ST官方软件STM32cubeMX,很方便) 2、通过IS
[单片机]
stm32 adc 采样率
STM32的ADC的采样时间及模拟信号的最大带宽。 请看STM32技术参考手册的16.2节,和STM32F103xx数据手册的5.3.17节表44。可以在ST的中文网站下载到上述2个手册: http://www.stmicroelectronics.com.cn/stonline/mcu/MCU_Pages.htm 前面所说 STM32的ADC的采样及转换时间最小为1us ,实际上STM32的ADC采样及转换时间可以通过程序编程进行调整,共有8种选择,按 ADC模块的驱动时钟算分别为: 1.5 ADC时钟周期 7.5 ADC时钟周期 13.5 ADC时钟周期 28.5 ADC时钟周期 41.5 ADC时钟周期 55.5 ADC时钟
[单片机]
基于STM32的NB-IoT模块驱动
一、概述 目前这个NB-IoT在国内还是比较火的,最近刚好使用了一款NB-IoT模块。将驱动程序贡献给大家。希望能对用到的朋友有点帮助。 二、NB-IoT模块介绍 本次采用的是有人物联网公司的WHNB75模块。(支持电信网络)WH-NB75 是基于 WH-NB73 模块开发出来的 DIP 封装的模块产品,该产品能够更方便的嵌入到客户产品中。WH-NB75 是我们 NB75 模块系列的一个总称,针对不同运营商网络有不同的模块型号对应。请在选购模块时注意选择支持当地运营商的模块。稳恒正在基于海思 Hi2115 芯片打造支持全频段的 NB 模组 WH-NB71,到时候可以一款模块支持多家运营商的网络。下表为不同型号产品对应的运营商。
[单片机]
STM32学习005_端口复用与重映射
一、使用复用功能(AF)时,要对端口位配置寄存器进行编程。 1)对于复用的输入功能,配置必须为上拉/下拉或者浮空; 2)对于复用输出功能,配置必须为复用功能输出模式(推挽,开漏)。 对于双向复用功能,必须配置为复用功能输出模式(推挽或者开漏),此时输入驱动器配置为浮空输入模式。 如果将一端口配置成复用输出功能,会将引脚和输入寄存器断开,并和片上外设的输出信号连接, 如果软件将一GPIO 口配置为复用输出功能,但外设没有被激活,它的输出将不确定。 要正常使用GPIO 复用功能,分三步来配置: 第一步,位寄存器配置; 第二步,开启对应的外设时钟; 第三步,激活该端口。 二、端口重映射 优点:优化电路设计;扩展功能,减少外设芯片资源;
[单片机]
STM32 Timer1 TIM1 中断
/*定时器1ms中断,死等定时器延时*/ /*File Timer.c */ #include stm32f10x.h unsigned int TimeDelay = 0; void TIM1_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_DeInit(TIM1); /*复位TIM1定时器*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); /*开时钟*/ TIM_Tim
[单片机]
STM32堆栈空间大小设置
1. 设置堆栈空间大小 在使用STM32编程时,一般情况下我们不会关注堆栈空间的大小,因为在STM32的启动文件中,已经帮我们预先设置好了堆栈空间的大小。如下图所示的启动代码中,Stack栈的大小为:0x400(1024Byte),Heap堆的大小为:0x200(512Byte)。 这也是为什么一个基础的工程编译后,RAM的空间也占用了1.6K左右的原因,因为堆栈的空间均分配在RAM中,可在编译的map文件中查看RAM资源占用的情况。 若工程中使用的局部变量较多,定义的数据长度较大时,若不调整栈的空间大小,则会导致程序出现栈溢出,程序运行结果与预期的不符或程序跑飞。这时我们就需要手动的调整栈的大小。 当工程中使用了
[单片机]
使用VSCode搭建STM32开发环境
首先附上一张VS Code图一直都喜欢这种,黑色主题感觉高大上。 一、需要的软件和工具。 下载最新版VS Code: 安装好插件,具有良好的代码补全与调试功能。 “VS Code下载地址:https://code.visualstudio.com/” 下载 LLVM:用于代码补全,其实可以理解为 Clang。因为VS Code 中“C/C++”插件的自动补全功能不太好用。STM32中好多库函数都补全不出来。记得按照好之后,将路径添加到环境变量里。 “LLVM下载地址:http://releases.llvm.org/download.html” 下载安装 Git for Windows: 提供Git支持和MINGW64指令终端
[单片机]