
STM32
Keep foolish
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
STM32之DAC操作
告知:在工程中,使用DAC输出电压,使用ADC进行电压采样,使用串口打印电压到电脑,相关功能的底层知识及寄存器配置就不在此赘述(主要是网上的大神讲的清清楚楚,野火及原子的教程也很详细),本工程大部分代码源于正点原子,请参阅原子源代码或教程获取更多知识!1.DAC配置:#include "dac.h"void Dac1_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; DAC_InitTypeDef DAC_InitType; RCC_A原创 2021-12-10 21:54:41 · 1897 阅读 · 0 评论 -
STM32之DMA及USART使用
头文件:#ifndef __USART_H#define __USART_H/* 引用头文件 */#include "stm32f10x.h"/* 接口定义 */#define MY_USART USART1#define MY_USART_BaudRate 115200#define TIMOUT (uint32_t)0xFFF#define BUFFER_SIZE原创 2021-09-14 15:13:23 · 1829 阅读 · 0 评论 -
STM32之寄存器操作基本定时器
#ifndef __BASIC_TIMER_H#define __BASIC_TIMER_H#include "stm32f10x.h"#define My_BASIC_TIM TIM6#define My_RCC_TIM6_EN (uint32_t)0x00000010#define My_BASIC_UIF (uint32_t)0x00000001 // Update Interrupt Flag#define M原创 2021-09-10 17:12:10 · 1302 阅读 · 0 评论 -
STM32F103之时钟配置
sysclock.h文件:#ifndef __SYSCLOCK_H#define __SYSCLOCK_H#include "stm32f10x.h"void My_HSE_SetSysClock(void);#endifsysclock.c文件:#include "sysclock.h"/* * RCC相关寄存器初始化 */static void My_RCC_DeInit(){ /* 内部高速时钟使能 */ RCC->CR |= (uint32_t)0x00原创 2021-09-07 21:17:49 · 1079 阅读 · 0 评论 -
STM32之谨慎对待while
代码片段1: /* 等待PLL稳定 */ tmpreg = (uint32_t)RCC->CR & (uint32_t)RCC_CR_PLLRDY; while(tmpreg == 0){ }代码片段2: while((RCC->CR & RCC_CR_PLLRDY) == 0) { }注意:上述两段代码看似表达的意思是一样的,但其实不然。片段一进行了1次判断后进入无限循环;代码2则是在判断——循环之间来回跳跃,起到等待作用。20原创 2021-09-07 20:50:47 · 1839 阅读 · 0 评论 -
STM32 硬件I2C读写AT24C02/08
#ifndef __I2C_H#define __I2C_H#include "stm32f10x.h"/**************************I2C参数定义,I2C1或I2C2********************************/#define EEPROM_I2Cx I2C1#define EEPROM_I2C_APBxClock_FUN原创 2021-09-02 17:15:01 · 1963 阅读 · 0 评论 -
STM32操作DS1302
#ifndef __DS1302_H#define __DS1302_H#include "stm32f10x.h"#include "stm32f10x_gpio.h"#include "stm32f10x_rcc.h"#include "systick.h"#define CE_L GPIO_ResetBits(GPIOC,GPIO_Pin_4) // 拉低使能位#define CE_H GPIO_SetBits(GPIOC,GPIO_Pin_4) // 拉高使能位#d原创 2021-08-31 14:40:48 · 2059 阅读 · 3 评论 -
STM32双向I/O问题
疑问:STM32的I/O可以像51单片机那样既能写也能读吗?翻看手册,直到看见手册这段话:测试:I/O配置为推挽输出,读取输入数据寄存器上对应的位数据,将读取值返回到串口;实现过程:1)配置PA15为推挽输出,使用PC5做对比;void KEY_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENAB.原创 2021-08-30 21:38:35 · 2948 阅读 · 0 评论 -
STM32外部中断:寄存器版
EXTI0头文件:#ifndef __EXIT_H#define __EXIT_H#include "stm32f10x.h"#include "stm32f10x_gpio.h"#include "led.h"void Exit0_Init(void);#endifEXTI0源文件:#include "exit.h"/* * 外部中断0 PA0 * 1.使能GPIOA时钟;2.使能复用功能IO时钟;3.配置AFIO中断输入 * 4.打开线0中断请求;5.允许上升沿触发原创 2021-08-29 15:27:12 · 478 阅读 · 0 评论 -
STM32 外部中断事件与中断解析
这张图是一条外部中断线或外部事件线的示意图,图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套.图中的蓝色虚线箭头,标出了外部中断信号的传输路径,首先外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中断挂起请求寄存器,最后经过编号4的与门输出到NVIC中断检测电路,这个边沿检测电路受上升沿或下降沿选择寄存器控制,用户可以使用这两个寄存器控制需要哪一个边沿产生中断,因为选择上升沿或下降沿是分别受2个平行的寄存器控制,所以用户可以同时选择上升沿或下降沿,而.原创 2021-08-29 11:30:42 · 695 阅读 · 0 评论 -
STM32 NVIC相关库函数解析
一、中断优先级分组函数:1)相关寄存器实际上,STM32的中断优先级只用到高4位,如下图所示:void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup){ /* Check the parameters */ assert_param(IS_NVIC_PRIORITY_GROUP(NVIC_PriorityGroup)); /* Set the PRIGROUP[10:8] bits according to NVIC_原创 2021-08-29 11:03:43 · 1100 阅读 · 0 评论 -
STM32 使用CAN进行通信
#ifndef __CAN_H#define __CAN_H#include "stm32f10x.h"#include "stm32f10x_can.h"#define CAN_RX0_INT_ENABLE ENABLE#define TESTID (0x0CF11AD0 & 0xFFFFFFFF)#define HAN_TESTID ((TESTID<<3) | (0x01<<2) | (0x00<<1))uint8_t Can_Mod原创 2021-08-27 15:15:26 · 3140 阅读 · 0 评论 -
STM32 使用滴答定时器来延时
#ifndef __SYSTICK_H#define __SYSTICK_H#include "stm32f10x.h"#define SetTim_1us 72#define SetTim_10us SetTim_1us*10#define SetTim_1ms SetTim_1us*1000void SysTick_Init(void);void Delay_us(uint32_t time);void Delay_ms(uint32_t time);#endi原创 2021-08-26 09:20:45 · 420 阅读 · 0 评论 -
CorTex-M3权威指南-滴答定时器
原创 2021-08-26 07:17:37 · 331 阅读 · 0 评论 -
KEIL关于core_cm3.c的错误
Build started: Project: Template*** Using Compiler 'V6.16', folder: 'F:\Program_File\MDK534\ARM\ARMCLANG\Bin'Build target 'Template'../CORE/core_cm3.c(445): error: non-ASM statement in naked function is not supported uint32_t result=0; ^../CORE/cor原创 2021-08-23 20:24:42 · 3899 阅读 · 1 评论 -
STM32 SystemCoreClockUpdate()函数详解
SystemCoreClockUpdate()作用:用来更新 SystemCoreClock 变量,在时钟配置完成之后,需要调用这个函数来更新 SystemCoreClock 变量;默认情况下:SystemCoreClock = 168000000(168MHz);配置相关参数导致HCLK不是168MHz时,需要调用SystemCoreClockUpdate()函数来更新SystemCoreClock 的值(即HCLK的频率),否则在使用SystemCoreClock变量时可能会导致错误产生;vo.原创 2021-08-22 21:53:37 · 7865 阅读 · 0 评论