自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 问答 (1)
  • 收藏
  • 关注

原创 野火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 477

原创 野火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 483

原创 野火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 676

原创 野火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 2804

原创 野火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 702

原创 野火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 660

原创 野火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 353

原创 野火STM32学习(5)

推挽输出和开漏输出的区别与特点优点Push-Pull推挽输出可以吸电流,也可以贯电流; 导通损耗低,传输速率高;Open-Drain开漏输出IC内部不需要提供驱动电流,减少了单片机自身损耗; 可以将多个开漏输出的Pin脚,连接到一条线上,形成“与逻辑”关系,即“线与”功能,任意一个变低后,开漏线上的逻辑就为0了。这也是I2C,SMBus等总线判断总线占用状态的原理; 开漏模式可以用于电平信号标准的转换,在开漏模式中外部上拉电阻的外加电源电压是不确定的,例如可以加5V电压也可以加3.3

2021-11-22 20:44:16 3810

原创 野火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 185

原创 关于keil出现乱码的解决办法

2021-11-21 11:35:50 1211

原创 关于使用keil但没有代码提示的解决办法

2021-11-20 20:40:14 13618 2

原创 野火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 240

原创 野火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 403

原创 Windows分盘

想要分出多个盘符可以合理分配内存大小并重复此操作

2021-11-16 20:45:10 348

原创 自制启动盘

到此,启动盘制作完成

2021-11-16 20:30:25 282

原创 野火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 1477

空空如也

ubuntu-qt-arm开发

2022-04-03

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除