stm32 寄存器操作
“stm32 寄存器操作”相关的资料有哪些?“stm32 寄存器操作”相关的范文有哪些?怎么写?下面是小编为您精心整理的“stm32 寄存器操作”相关范文大全或资料大全,欢迎大家分享。
牛人的STM32学习笔记(寄存器版本)
一、GPIO口的配置
STM32的DGPIO口最多可以有7组(GPIOa~GPIOg),而每一组GPIO口均有16个双向IO组成。并且没个IO口均可配置成8种模式(4种输入模式,4种输出模式)。不管配置哪个IO口也不论将其配置成哪种模式(但是配置成哪种模式要看具体应用,参考《中文参考手册》第105页)都可以按以下步骤来进行配置: (1)使能PORTx(x=A~G)时钟
这里就得操作寄存器RCC_APB2ENR(32为寄存器)了
15 ADC3EN 7 IOPFEN 14 13 USART1EN TIM8EN 6 5 IOPEEN IOPDEN 12 SPI1EN 4 IOPCEN 11 TIM1EN 3 IOPBEN 10 ADC2EN 2 IOPAEN 9 ADC1EN 1 保留 8 IOPGEN 0 AFIOEN RCC_APB2ENR的0~15位(06~32位保留)
第2~8分别是使能GPIOA~GPIOG时钟的,只要将其置“1”即可,如
RCC_APB2ENR|=1<<2;就是使能GPIOA的时钟;其余IO口的始终使能一次类推。 (2)对相应的IO模式进行配置,低8位配置GPIOx_CRL;高8位配置GPIOx_CRH 31 30 CNF7[1:0] 23 22 CNF5[1:0] 15 14 CNF3[1:0] 7 6 CNF1[1:0] 29 28 MODE7[1:0] 21 20 MODE5[1:0] 13 12 MODE3[1:0] 5 4 MODE1[1:0] 27 26 CNF6[1:0] 19 18 CNF4[1:0] 11 10 CNF2[1:0] 3 2 CNF0[1:0] 25 24 MODE6[1:0] 17 16 MODE4[1:0] 9 8 MODE2[1:0] 1 0 MODE0[1:0] GPIOx_CRL(x=A~G(端口配置低寄存器x=A?E)
该寄存器用
牛人的STM32学习笔记(寄存器版本)
一、GPIO口的配置
STM32的DGPIO口最多可以有7组(GPIOa~GPIOg),而每一组GPIO口均有16个双向IO组成。并且没个IO口均可配置成8种模式(4种输入模式,4种输出模式)。不管配置哪个IO口也不论将其配置成哪种模式(但是配置成哪种模式要看具体应用,参考《中文参考手册》第105页)都可以按以下步骤来进行配置: (1)使能PORTx(x=A~G)时钟
这里就得操作寄存器RCC_APB2ENR(32为寄存器)了
15 ADC3EN 7 IOPFEN 14 13 USART1EN TIM8EN 6 5 IOPEEN IOPDEN 12 SPI1EN 4 IOPCEN 11 TIM1EN 3 IOPBEN 10 ADC2EN 2 IOPAEN 9 ADC1EN 1 保留 8 IOPGEN 0 AFIOEN RCC_APB2ENR的0~15位(06~32位保留)
第2~8分别是使能GPIOA~GPIOG时钟的,只要将其置“1”即可,如
RCC_APB2ENR|=1<<2;就是使能GPIOA的时钟;其余IO口的始终使能一次类推。 (2)对相应的IO模式进行配置,低8位配置GPIOx_CRL;高8位配置GPIOx_CRH 31 30 CNF7[1:0] 23 22 CNF5[1:0] 15 14 CNF3[1:0] 7 6 CNF1[1:0] 29 28 MODE7[1:0] 21 20 MODE5[1:0] 13 12 MODE3[1:0] 5 4 MODE1[1:0] 27 26 CNF6[1:0] 19 18 CNF4[1:0] 11 10 CNF2[1:0] 3 2 CNF0[1:0] 25 24 MODE6[1:0] 17 16 MODE4[1:0] 9 8 MODE2[1:0] 1 0 MODE0[1:0] GPIOx_CRL(x=A~G(端口配置低寄存器x=A?E)
该寄存器用
牛人的STM32学习笔记(寄存器版本)
一、GPIO口的配置
STM32的DGPIO口最多可以有7组(GPIOa~GPIOg),而每一组GPIO口均有16个双向IO组成。并且没个IO口均可配置成8种模式(4种输入模式,4种输出模式)。不管配置哪个IO口也不论将其配置成哪种模式(但是配置成哪种模式要看具体应用,参考《中文参考手册》第105页)都可以按以下步骤来进行配置: (1)使能PORTx(x=A~G)时钟
这里就得操作寄存器RCC_APB2ENR(32为寄存器)了
15 ADC3EN 7 IOPFEN 14 13 USART1EN TIM8EN 6 5 IOPEEN IOPDEN 12 SPI1EN 4 IOPCEN 11 TIM1EN 3 IOPBEN 10 ADC2EN 2 IOPAEN 9 ADC1EN 1 保留 8 IOPGEN 0 AFIOEN RCC_APB2ENR的0~15位(06~32位保留)
第2~8分别是使能GPIOA~GPIOG时钟的,只要将其置“1”即可,如
RCC_APB2ENR|=1<<2;就是使能GPIOA的时钟;其余IO口的始终使能一次类推。 (2)对相应的IO模式进行配置,低8位配置GPIOx_CRL;高8位配置GPIOx_CRH 31 30 CNF7[1:0] 23 22 CNF5[1:0] 15 14 CNF3[1:0] 7 6 CNF1[1:0] 29 28 MODE7[1:0] 21 20 MODE5[1:0] 13 12 MODE3[1:0] 5 4 MODE1[1:0] 27 26 CNF6[1:0] 19 18 CNF4[1:0] 11 10 CNF2[1:0] 3 2 CNF0[1:0] 25 24 MODE6[1:0] 17 16 MODE4[1:0] 9 8 MODE2[1:0] 1 0 MODE0[1:0] GPIOx_CRL(x=A~G(端口配置低寄存器x=A?E)
该寄存器用
stm8寄存器
所用芯片 stm8s105s4 开发环境:ST Visual Develop Stm8s的库为V1.1.1
CPU频率及所有外设频率/时钟
系统复位后,所有外设时钟均处于开的状态。用户可通过清除CLK_PCKENR1或CLK_PCKENR2中的PCKEN位来关闭相应的外设时钟。但是在关闭外设的时钟前,用户必须设置相应的位禁用该外设。 为了使能一个外设,用户必须先设置寄存器CLK_PCKENR中对应的PCKEN位,然后设置外设控制寄存器中的外设使能位。
AWU计数器是由独立于fMASTER的内部或外部时钟(LSI或HSE)驱动,因此,即使寄存器的时钟已被关掉,该外设依然可以继续运行。 例如禁用所有外设时钟:
CLK_PCKENR1 = 0x00;// close all clks of Peripheral CLK_PCKENR2 = 0x00; 开启定时器TIME1定时器时钟:
CLK_PCKENR1 |= 0x20; //具体参考STM8S_Reference 59页
CPU分频因子:CPU时钟(fCPU)由主时钟(fMASTER)分频而来,分频因子由时钟分频寄存器(CLK_CKDIVR)中的位CPUDIV[2:0]决定。共7个分频因子
基于寄存器操作的STM32高级定时器TIM1的四路PWM输出程序讲解
经过一天的努力,终于把stm32 tim1的四路pwm输出搞了出来,为了使大家快速的用起tim1,打算写这篇文档与大家分享。
stm32 tim1功能丰富。针对pwm输出与tim2只有细小的差别,之前在网上找了一些网友的程序,发现大部分都是基于库文件写的,不能对tim1的pwm输出有深层次的理解,个人认为一个合格的程序员,想要最大程度的用好一个片子的话还是要针对寄存器直接操作,完全了解定时器的运行过程,可以对片子的结构有一定的了解。
高级控制定时器(TIM1 和TIM8) 由一个16位的自动装载计数器组成,它由一个可编程的预分频器驱动。它适合多种用途,包含测量输入信号的脉冲宽度( 输入捕获) ,或者产生输出波形( 输出比较、PWM、嵌入死区时间的互补PWM等)。使用定时器预分频器和RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒到几个毫秒的调节。
高级控制定时器(TIM1 和TIM8) 和通用定时器(TIMx) 是完全独立的,它们不共享任何资源。
请读者仔细阅读一下信息:
脉冲宽度调制模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号。在TIMx_CCMRx寄存器中的OCxM位写入’1
寄存器
英文名称:Register
寄存器定义
寄存器是中央处理器内的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。
寄存器是内存阶层 中的最顶端,也是系统操作资料的最快速途径。寄存器通常都是以他们可以保存的 位元 数量来估量,举例来说,一个 “8 位元寄存器”或 “32 位元 寄存器”。寄存器现在都以寄存器档案 的方式来实作,但是他们也可能使用单独的正反器、高速的核心内存、薄膜内存 以及在数种机器上的其他方式来实作出来。
寄存器通常都用来意指由一个指令之输出或输入可以直接索引到的暂存器群组。更适当的是称他们为 “架构寄存器”。
例如,x86 指令及定义八个 32 位元寄存器的集合,但一个实作 x86 指令集的 CPU 可以包含比八个更多的寄存器。
寄存器是CPU内部的元件,寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。
寄存器用途
1.可将寄存器内的数据执行算术及逻辑运算。
2.存于寄存器内的地址可用来指向内
IO寄存器
数字I/O端口寄存器
7.2.1 输入寄存器 PxIN
当 I/O管脚被配置为普通IO口时, 对应 IO口的信号输入值表现为输入寄存器中的每一个 位。
·位为零:输入为低 ·位为一:输入为高 注意:写只读寄存器PxIN
写这些只读寄存器会导致在写操作被激活的时候电流的增加。
7.2.2 输出寄存器 PxOUT
当 I/O管脚被配置为普通IO口并且为输出方向时, 对应IO 口的输出值表现为输出寄存器
中的每一个位。
·位为零:输出为低 ·位为一:输出为高
如果管脚被配置为普通I/O功能、输出方向并且置位寄存器使能时,PxOUT 寄存器的相应
管脚被选择置高或者置低。 ·位为零:该管脚置低 ·位为一:该管脚置高
7.2.3 方向寄存器 PxDIR
PxDIR寄存器中的每一位选择相应管脚的输入输出方向,不管该管脚实现何功能。当管脚
被设置为其
STM32 湿度传感器程序
湿度传感器程序
以下是C文件
#include //复位DHT11 void DHT11_Rst(void) { DHT11_IO_OUT(); //SET OUTPUT DHT11_DQ_OUT=0; //拉低DQ delay_ms(20); //拉低至少18ms DHT11_DQ_OUT=1; //DQ=1 delay_us(30); //主机拉高20~40us } //等待DHT11的回应 //返回1:未检测到DHT11的存在 //返回0:存在 u8 DHT11_Check(void) { u8 retry=0; DHT11_IO_IN();//SET INPUT while (DHT11_DQ_IN&&retry<100)//DHT11会拉低40~80us { retry++; delay_us(1); }; if(retry>=100)return 1; else retry=0; while (!DHT11_DQ_IN&&retry<100)//DHT1
STM32定时器、usart、spi
STM32总结
一、以下是我对这几天学习的一点总结。
1、 通信模块:USART
a:双机通信(总体就是对发送和接收的配置)
USART_InitTypeDef USART_InitStructure; //串口设置恢复默认参数
USART_ClockInitTypeDef USART_ClockInitStructure;
/* 串口1的配置
- 波特率 = 9600 - 数据长度 =8位 - 一个停止位 - 无校验
- 允许接收和发送 - 非硬件流控制 - USART时钟禁止
- USART CPOL: 时钟低电平 //指定了下SLCK引脚上时钟输出的极性 - USART CPHA: 时钟第二个边沿进行数据捕获 //指定了下SLCK引脚上时钟输出的相位
- USART LastBit: 最后一位数据的时钟脉冲不从SCLK输出 */
USART_InitStructure.USART_BaudRate
STM32定时器、usart、spi
STM32总结
一、以下是我对这几天学习的一点总结。
1、 通信模块:USART
a:双机通信(总体就是对发送和接收的配置)
USART_InitTypeDef USART_InitStructure; //串口设置恢复默认参数
USART_ClockInitTypeDef USART_ClockInitStructure;
/* 串口1的配置
- 波特率 = 9600 - 数据长度 =8位 - 一个停止位 - 无校验
- 允许接收和发送 - 非硬件流控制 - USART时钟禁止
- USART CPOL: 时钟低电平 //指定了下SLCK引脚上时钟输出的极性 - USART CPHA: 时钟第二个边沿进行数据捕获 //指定了下SLCK引脚上时钟输出的相位
- USART LastBit: 最后一位数据的时钟脉冲不从SCLK输出 */
USART_InitStructure.USART_BaudRate