延迟摄影
延迟摄影跳箱子 室内 室外
PWM-LED灯闪烁
目标 LED灯闪烁,亮度从暗到亮再到暗。点击按钮后,改为另一个灯的亮度发生变化 接线图 蓝色LED接在A1,绿色LED接在B3, 按钮接在B15 关键点 TIM的通道有固定的端口,TIM2通道1默认是PA0,但是通过重映像,可以改变通道的端口,可以改变的端口如表中所示(竖着看),有四种重映像可选 本例中点击按钮后,会切换重映像00<->01,...
外部时钟
TIM 外部时钟目标使用外部时钟引脚输入作为定时器的时钟,不预分频,计数器计10个数后重置,触发更新中断,LED屏上计数+1 接线图 原理代码时钟源不再使用内部时钟,而是通过外部时钟引脚输入,预分频和计数周期改低,方便按键计数 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950// 初始化定时器void TIM_init(void){ //开启时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //配置时钟源为内部时钟 TIM_InternalClockConfig(TIM2); //配置时钟源为外部时钟 TIM2, 不预分频, 不反向(高电平),外部滤波器采样频率(0x00不滤波,试了0-F都对按键抖动都没用) TIM_ETRClockMode2Config(TIM2, TIM_ExtTRGPSC_OFF,...
定时中断
TIM 定时中断目标使用内部时钟,通过更新中断每秒触发1次事件,在LED显示屏上显示计数 接线图 原理内部时钟每秒72m次的频率,通过TIM定时器可以将频率分频,每次达到设定的值后,计数器会清0重新计数,这时候可以触发更新中断,更新中断调用预设的函数,使程序的计数+1 内部时钟->TIM定时器分频->更新中断 代码TIM定时器以及NVIC的初始化 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748// 初始化定时器void TIM_init(void){ //开启时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //配置时钟源为内部时钟 TIM_InternalClockConfig(TIM2); //时基单元初始化 TIM_TimeBaseInitTypeDef def; ...
EXTI外部中断-按键计数
EXTI外部中断-按键计数目标:接线图 按键端接在STM32 B15,另一端接在面包板负极 笔记 中断的流程是 AFIO选择GPIO的输入端口 -> EXTI触发中断 -> NVIC响应中断 应该是这样? 代码按键部分 1234// 开启时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);// 初始化GPIO 输入模式(这里的gpioInit是个人封装的函数,执行了定义结构体并初始化的操作)gpioInit(GPIOB, GPIO_Pin_15, GPIO_Mode_IPU); EXTI外部中断的设置 12345678910111213141516171819202122232425262728293031323334353637383940//初始化外部中断void initExti(void){ // 时钟使能 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,...
OLED显示屏
STM32接OLED显示屏目标:在oled显示屏幕上显示内容使用江协科技的oled库,里面内容的需要进一步学习,现阶段无需了解,学会使用即可 接线图 OLED屏幕安装在右下角 红线一端接STM32F103C8T6 3v3口,一端接面包板正极 绿线一端接STM32F103C8T6 GND口,一端接面包板负极 OLED屏SCL接STM32 B6,SAD接B7,GND和VCC分别用跳线接到面包板的正极和负极 代码1234567891011121314#include "stm32f10x.h" // Device header#include "System/Delay.h"#include "System/OLED.h"int main(void){ // 初始化Oled OLED_Init(); // 从第1行第1位开始打印字符串 OLED_ShowString(1, 1, "Hello World!"); while(1) ...
按键控制Led
按键控制Led灯的亮灭目标PB1的按键控制PA1的Led灯,PB3的按键控制PA3的led灯,切换它们原本的状态(亮->灭,灭->亮)。按键可同时按下! 接线图 红线一端接STM32F103C8T6 3v3口,一端接面包板正极 绿线一端接STM32F103C8T6 GND口,一端接面包板负极 红色led正极接面包板正极,负极接stm32 A1 蓝色led正极接面包板正极,负极接stm32 A3 两个按键其中一端都是接面包板负极,另一段分别接在stm32 B1, stm32 B3 代码第一步是初始化GPIO端口,默认关掉led灯这里的关键是对保存了按键状态,不用一直灯等松手 以及使用二进制上的位表示按键按下,用一个返回值就能表示多个按键的状态, 1表示按下 0 0 0 0 0 0 0 0 123456789101112131415161718192021222324//使能GPIOA(打开开关)RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,...
Led跑马灯
LED跑马灯目标:通过轮流点亮led灯,实现跑马灯的效果 接线图 红线一端接STM32F103C8T6 3v3口,一端接面包板正极 绿线一端接STM32F103C8T6 GND口,一端接面包板负极 红绿蓝三个led都是正极接面包板正极,负极接stm32,分别是A1, A2, A3口 代码12345678910111213141516171819202122232425//使能GPIOA(打开开关)RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//定义初始化GPIO口需要的结构体GPIO_InitTypeDef def;//推挽输出 可输出高低电平def.GPIO_Mode = GPIO_Mode_Out_PP;//初始化PA1、PA2、PA3def.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;def.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA,...
点亮LED
点亮LED目标:通过修改GPIO口的电平,点亮led灯 接线图 红线一端接STM32F103C8T6 3v3口,一端接面包板正极 绿线一端接STM32F103C8T6 GND口,一端接面包板负极 红色led正极接面包板正极,负极接stm32 A1 蓝色led正极接stm32 A2,负极接面包板负极 代码1234567891011121314//使能GPIOA(打开开关)RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//定义初始化GPIO口需要的结构体GPIO_InitTypeDef def;//推挽输出 可输出高低电平def.GPIO_Mode = GPIO_Mode_Out_PP;//初始化PA1和PA2def.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2;def.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &def);//设置低电平GPIO_SetBits(GPIOA,...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick StartCreate a new post1$ hexo new "My New Post" More info: Writing Run server1$ hexo server More info: Server Generate static files1$ hexo generate More info: Generating Deploy to remote sites1$ hexo deploy More info: Deployment