首页
关于本站
其他站点
意见反馈
更多
我的目标
假期规划
Search
1
分享一下我觉得还不错的摘抄句子
251 阅读
2
过年啦
237 阅读
3
看职高三年,又是三年,好快!
153 阅读
4
聊那天给学校做个全景地图,现在想起也挺尴尬的
147 阅读
5
这两个有趣的md5
116 阅读
日常生活
随手一记
学习踩坑
技术分享
学习笔记
STM32
登录
Search
你的糖来啦
累计撰写
35
篇文章
累计收到
6
条评论
首页
栏目
日常生活
随手一记
学习踩坑
技术分享
学习笔记
STM32
页面
关于本站
其他站点
意见反馈
我的目标
假期规划
搜索到
8
篇与
的结果
2024-06-19
STM32实现LED流水灯的效果
使用GPIO_Pin_x其实是使用#define重命名后的GPIO_Pin_x的十六进制位以GPIO_Pin_0到GPIO_Pin_7为例,他们被定义的十六进制为:#define GPIO_Pin_0 ((uint16_t)0x0001) /*!< Pin 0 selected 00000001*/ #define GPIO_Pin_1 ((uint16_t)0x0002) /*!< Pin 1 selected 00000010*/ #define GPIO_Pin_2 ((uint16_t)0x0004) /*!< Pin 2 selected 00000100*/ #define GPIO_Pin_3 ((uint16_t)0x0008) /*!< Pin 3 selected 00001000*/ #define GPIO_Pin_4 ((uint16_t)0x0010) /*!< Pin 4 selected 00010000*/ #define GPIO_Pin_5 ((uint16_t)0x0020) /*!< Pin 5 selected 00100000*/ #define GPIO_Pin_6 ((uint16_t)0x0040) /*!< Pin 6 selected 01000000*/ #define GPIO_Pin_7 ((uint16_t)0x0080) /*!< Pin 7 selected 10000000*/GPIO_Write直接传入GPIO_Pin_x会把他设置成为低电平,不对其他GPIO_Pin_x进行操作,但是我们这里想要的是给指定位设置成低电平其他位设置成高电平所以进行取反操作,通过~0x0001操作得到0xFFFE(忽略高位,实际操作中只关心低16位),意味着除了GPIOA的最低位(第0位GPIO_Pin_0)之外的所有位都被设置为高电平,而最低位的状态是低电平。然后使用Delay延迟一段时间在进行下一次位操作实现流水灯效果 点击跳转到Delay定时器实现文件#include "stm32f10x.h" // Device header #include "Delay.h" int main() { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); GPIO_InitTypeDef GPIOA_CONFIG; GPIOA_CONFIG.GPIO_Mode = GPIO_Mode_Out_PP; GPIOA_CONFIG.GPIO_Pin = GPIO_Pin_All; GPIOA_CONFIG.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIOA_CONFIG); while(1) { GPIO_Write(GPIOA,~0x0001); Delay_ms(500); GPIO_Write(GPIOA,~0x0002); Delay_ms(500); GPIO_Write(GPIOA,~0x0004); Delay_ms(500); GPIO_Write(GPIOA,~0x0008); Delay_ms(500); GPIO_Write(GPIOA,~0x0010); Delay_ms(500); GPIO_Write(GPIOA,~0x0020); Delay_ms(500); GPIO_Write(GPIOA,~0x0040); Delay_ms(500); GPIO_Write(GPIOA,~0x0080); Delay_ms(500); } }
2024年06月19日
5 阅读
0 评论
0 点赞
2024-06-19
STM32控制LED闪烁
先点亮LED一段时间再熄灭一段时间在重新点亮一段时间依此循环达到LED闪烁的目的{callout color="#f0ad4e"}Delay.c 延迟函数{/callout}#include "stm32f10x.h" /** * @brief 微秒级延时 * @param xus 延时时长,范围:0~233015 * @retval 无 */ void Delay_us(uint32_t xus) { SysTick->LOAD = 72 * xus; //设置定时器重装值 SysTick->VAL = 0x00; //清空当前计数值 SysTick->CTRL = 0x00000005; //设置时钟源为HCLK,启动定时器 while(!(SysTick->CTRL & 0x00010000)); //等待计数到0 SysTick->CTRL = 0x00000004; //关闭定时器 } /** * @brief 毫秒级延时 * @param xms 延时时长,范围:0~4294967295 * @retval 无 */ void Delay_ms(uint32_t xms) { while(xms--) { Delay_us(1000); } } /** * @brief 秒级延时 * @param xs 延时时长,范围:0~4294967295 * @retval 无 */ void Delay_s(uint32_t xs) { while(xs--) { Delay_ms(1000); } } {callout color="#f0ad4e"}main.c{/callout}#include "stm32f10x.h" // Device header #include "Delay.h" //引入延迟函数 int main(void) { //启动APB时钟控制 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //初始化参数 GPIO_InitTypeDef GPIO_InitStructure; //设置结构体参数 //设置输出模式 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置引脚 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //设置输出速度 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //传入参数 GPIO_Init(GPIOA, &GPIO_InitStructure); while(1) { //输出低电平 GPIO_ResetBits(GPIOA,GPIO_Pin_0); //延迟500ms Delay_ms(500); //输出高电平 GPIO_SetBits(GPIOA,GPIO_Pin_0); Delay_ms(500); } }
2024年06月19日
9 阅读
0 评论
0 点赞
2024-06-19
STM32点亮LED
以下代码配置GPIOA的第0号引脚为推挽输出模式 使用低电平进行点亮LED#include "stm32f10x.h" // Device header int main(void) { //启动APB时钟控制 这里配置的是GPIOA RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //初始化参数 GPIO_InitTypeDef GPIO_InitStructure; //设置结构体参数 //设置输出模式 这里是推挽输出 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置引脚 这里设置的是0号引脚 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //设置输出速度 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //传入参数 GPIO_Init(GPIOA, &GPIO_InitStructure); while(1) { //输出低电平 GPIO_ResetBits(GPIOA,GPIO_Pin_0); } } //最后一行一一定要留空行
2024年06月19日
12 阅读
0 评论
0 点赞
1
2