野火STM32学习
学习STM32
Thui777
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
野火STM32学习(12)
中断方式延时#include "bsp_SysTick.h"static __IO uint32_t TimingDelay;/* 定时器初始化函数 */void SysTick_Init(void) { //1ms中断一次 SystemCoreClock=168MHz if(SysTick_Config(SystemCoreClock/1000)){ while(1); }}/* 毫秒延时函数 */void delay_ms(__IO uint32_t count){原创 2022-01-01 14:03:11 · 493 阅读 · 0 评论 -
野火STM32学习(11)
Systick——系统定时器core_cm4.h中关于SysTick_Config的描述__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks){ /* 如果加载值大于最大值返回1 */ if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* 将加载值写入重装载寄存器 */ SysTick->LOAD = ticks - 1...原创 2022-01-01 14:01:12 · 492 阅读 · 0 评论 -
野火STM32学习(10)
时钟——STM32F407ZGTX/* system_stm32f4xx.c 中关于时钟配置(setsysclock)的代码---寄存器版 */static void bsp_SetSysClock(void){ __IO uint32_t StartUpCounter = 0, HSEStatus = 0; /* HSE 时钟使能 */ RCC->CR |= ((uint32_t)RCC_CR_HSEON); /* 等待 HSE 时钟就绪后跳出循环或超时*/原创 2022-01-01 13:55:48 · 698 阅读 · 0 评论 -
野火STM32学习(9)
位带操作在STM32中有一块位带别名区(Bit band alias),对这个区域进行操作等于直接对寄存器中的位(位带区:Bit Band region)进行操作;其中位带区中的每一个位在位带别名区会被膨胀成 4 个byte,也就是下图中 1M 膨胀成 32M1.外设位带区和外设位带别名区外设位带区起始 地址从0x40000000开始,0x400FFFFF结束外设位带别名区起始 地址从0x42000000开始,0x43FFFFFF结束2.S...原创 2021-12-14 15:07:06 · 2812 阅读 · 0 评论 -
野火STM32学习(8)
关于各个文件的使用及其作用startup_stm32f0xx.s 汇编编写的启动文件system_stm32f4xx.hsystem_stm32f4xx.c 初始化系统时钟(F4为168MHZ)片上外设文件 stm32f4xx.h 外设寄存器映射 stm32f4xx_gpio.h stm32f4xx_gpio.c stm32f4xx_xxxx.h stm32f4xx_xxxx.c 芯片外设的驱动库内核文件 core_cm4..原创 2021-12-11 09:23:28 · 716 阅读 · 0 评论 -
野火STM32学习(7)
编写GPIO初始化结构体和初始化函数stm32f4xx_gpio.h/* 端口模式 */typedef enum{ GPIO_Mode_IN = 0x00, GPIO_Mode_OUT = 0x01, GPIO_Mode_AF = 0x02, GPIO_Mode_AN = 0x03}GPIOMode_TypeDef;/* 端口输出速度 */typedef enum{ GPIO_Speed_2MHZ = 0x00, GPIO_Speed_25MHZ = 0原创 2021-12-02 15:17:40 · 673 阅读 · 0 评论 -
野火STM32学习(6)
编写置位/复位函数#ifndef __STM32F4XX_GPIO_H#define __STM32F4XX_GPIO_H#include "stm32f4xx.h"#define GPIO_Pin_0 (1<<0)#define GPIO_Pin_1 (1<<1)#define GPIO_Pin_2 (1<<2)#define GPIO_Pin_3 (1<<3)#define GPIO_Pin_4 (1&原创 2021-11-30 09:20:30 · 373 阅读 · 0 评论 -
野火STM32学习(5)
推挽输出和开漏输出的区别与特点优点Push-Pull推挽输出可以吸电流,也可以贯电流; 导通损耗低,传输速率高;Open-Drain开漏输出IC内部不需要提供驱动电流,减少了单片机自身损耗; 可以将多个开漏输出的Pin脚,连接到一条线上,形成“与逻辑”关系,即“线与”功能,任意一个变低后,开漏线上的逻辑就为0了。这也是I2C,SMBus等总线判断总线占用状态的原理; 开漏模式可以用于电平信号标准的转换,在开漏模式中外部上拉电阻的外加电源电压是不确定的,例如可以加5V电压也可以加3.3原创 2021-11-22 20:44:16 · 3863 阅读 · 0 评论 -
野火STM32学习(4)
GPIO称通用输入输出,其包括:4个配置寄存器:GPIOx_MODER(输入/输出/复用/模拟)、GPIOx_OTYPER(推挽/开漏)、GPIOx_OSPEEDR(25/50/75/100MHZ) 和 GPIOx_PUPDR(浮空/上拉/下拉/保留)2个数据寄存器:GPIOx_IDR(输入数据寄存器)、GPIOx_ODR(输出数据寄存器)1个复位/置位寄存器:GPIOx_BSRR1个锁定寄存器:GPIOx_LCKR...原创 2021-11-22 20:37:41 · 195 阅读 · 0 评论 -
野火STM32学习(3)
使用寄存器点亮LED灯(PE3)#include "stm32f4xx.h"int main(void){ /* 打开GPIOE的时钟 */ *( unsigned int *)(0x40023800+0x30) |= (1<<4); //写入1 /* GPIOE配置为输出 */ *( unsigned int *)(0x40021000+0x00) &= ~((0x03)<<(2*3)); //清0 *( unsigned int *)(0x原创 2021-11-20 20:32:24 · 261 阅读 · 0 评论 -
野火STM32学习(2)
C语言对寄存器的封装#define GPIOF_BASE (0x40021400) //设置GPIOF的基地址#define GPIOF_MODER *( unsigned int *)(GPIOF_BASE + 0X00) //设置偏移地址#define GPIOF_OTYPER *( unsigned int *)(GPIOF_BASE + 0X00) //设置偏移地址#define GPIOF_OSPEEDR *( unsigned int *)(GPIOF_BASE +原创 2021-11-20 20:30:56 · 423 阅读 · 0 评论 -
野火STM32学习(1)
1.STM32是32位CPU,32位CPU每次可以处理32个字位,即32bits=4Bytes。每一个字节都有一个地址,其中包含了8个字位。32位CPU有32跟地址线,地址线决定了寻址范围的能力。每一根线都决定0和1两个地址,那么两根线就会决定00,01,10,11这四个地址,依次类推,32根线总共会决定出2^32次方个位置,每一个位置都是8bits=1Byte,这是内存的基本单位,所以2^32位可以寻址4GB,超出4GB无法寻址2.0xFFFFFFFF中:0x代表16进制,后每两个F代表1Byte,一原创 2021-11-01 18:16:52 · 1492 阅读 · 0 评论
分享