- 博客(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
原创 野火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
原创 野火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关注的人
RSS订阅
2