
stm32单片机
记录STM32单片机的一些细节问题
gyroRdy
这个作者很懒,什么都没留下…
展开
-
stm32f103-gpio源码理解
提要:参照野火的stm32f103开发指南,对标准库的构造进行理解:(1)使用结构体,使用宏,使用枚举(2)因为参数是可变的,所以针对可变的参数,设计了函数,目的是尽管参数不同,但最终都能配置相关的寄存器。//枚举typedef enum{ GPIO_Speed_10MHz = 1, GPIO_Speed_2MHz, GPIO_Speed_50MHz}GPIOSpeed_TypeDef;//结构体typedef enum{ GPIO_Mode_AIN = 0x0,原创 2022-02-26 13:59:08 · 993 阅读 · 0 评论 -
正点原子f103新建工程模板——基于固件库
编译器版本要选对,1,原来的MDK版本5.15,使用的V5编译器;新的MDK5.26使用的是V6编译器;2,在5.26版本下,ARM Compiler选择V5.06 update 6(build 750)时候,需要将“Run-Time Environment”中的不必要引用去掉,不然会有大量报错;3,如果ARM Compiler选择使用“Use default compiler version 6”会自动勾选部分引用,但是由于使用的“CMSIS”版本是旧的,在V6下无法编译通过,编译失败。打开st原创 2022-02-22 01:05:10 · 652 阅读 · 0 评论 -
通用定时器6
stm32f407–通用定时器6,2秒翻转亮灯#include "tim6.h"void tim6_Init(void){ TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; NVIC_InitTypeDef NVIC_InitStruct; /** *S1:开启通用定时器6的时钟 */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE); /** *S2:TIM6外设配置原创 2022-02-07 20:36:40 · 409 阅读 · 0 评论 -
stm32的GPIO口PA0按键没按下就是低电平的分析
芯片:stm32f407ZET6X功能:实现两按键分别控制四个灯和一个蜂鸣器思路:将寄存器设置封装成函数,体会固件库的实现原理踩坑记录:下载程序后发现与PA0连接的按键,为按下,就出现了灯闪,蜂鸣器响,正常逻辑应该是按下按键,PA0口接地,此时才灯亮。原因分析:因为初始化PA0口时没有使能A组的时钟(RCC_AHB1ENR |= (0x01); 漏写),所以,上拉拉设置对A组IO口无效,我发现GPIO口在未使能的状态下,是低电平,猜想默认是下拉吗???。对于输入口,不要尝试置位或复位,因为输入模式原创 2021-07-06 23:02:42 · 3862 阅读 · 1 评论 -
(1)用keil编辑STM32点灯---遇到灯常亮不闪烁的问题
前言:我自己装了MDK后,按照讲课老师讲解,编写了一个stm32通过寄存器控制LED灯闪烁的程序,结果发现led灯不闪烁,但是程序写的没问题啊,和视频中讲师的源码一模一样,但就是,运行不成功,led灯常亮,并没有闪烁。百思不得其解。后来发现是volatile的问题,和keil优化级别设置问题导致的。我的keil工程优化级别的默认设置如下图:优化级别设置默认为-O1解决stm32点亮LED不闪烁问题方法有两个:方法一:更改优化级别为-O0方法二:while循环中出现的变量,定义时加上关键字volat原创 2021-06-28 22:29:23 · 8906 阅读 · 6 评论