数码之家

 找回密码
 立即注册
搜索
查看: 2856|回复: 11

[STM] STM32学习记录GPIO

[复制链接]
发表于 2021-3-10 13:52:53 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
还是记录在网上比较好找一些

IO分配A、B、C、D、E几组,每组16个点,既可作为输入也可作为输出
用到哪个IO,先要对其进行配置,配置格式固定
配置时还要同时开启对应的时钟
使用每个芯片内装置都用启用对应的时钟,比如IO,串口,总线,中断,各自有各自的时钟。
void GPIO_Set(void)   
{
    GPIO_InitTypeDef GPIO_InitStructure;                                           //声明结构体变量
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);           //每组IO都有对应的时钟,这个是GPIOB组的时钟
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;     //同一组内想要设置的具体针脚
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                  //IO频率
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                    //工作模式选择,输入还是输出,输入方式与输出方式
   GPIO_Init(GPIOB, &GPIO_InitStructure);                                         //把设置的参数输入芯片控制器
}
单个IO控制命令
GPIO_SetBits(GPIOB, GPIO_Pin_6);          //把B组6号设置为1
GPIO_ResetBits(GPIOB, GPIO_Pin_3);      //把B组3号设置为0

在网上找的1ms延时,时间不准,但是差不多
void Delayms(u16 ms)
{
  u16 i,j;
  u8 k;
  for(i=0;i<ms;i++)
    for(j=0;j<0x0500;j++) k++;
}

闪灯程序
#include "stm32f10x.h"

int main(void)
{
      GPIO_Set() ;     //配置IO,配置完就可以用了
                while(1)
               {
                    GPIO_SetBits(GPIOB, GPIO_Pin_6);      
                    Delayms(1000);                                //1秒延时
                    GPIO_ResetBits(GPIOB, GPIO_Pin_6);  
                    Delayms(1000);
               }

}      
   
   


打赏

参与人数 1家元 +4 收起 理由
cutter + 4 謝謝分享

查看全部打赏

发表于 2021-3-10 14:20:53 | 显示全部楼层
建议学习HAL或者LL库
IO配置可以用CubeMX自动配置。
如果是JTAG复用的IO,默认功能是JTAG,需要使能AFIO时钟,并关闭JTAG功能。不要关SWD:titter:

打赏

参与人数 1家元 +4 收起 理由
cutter + 4 謝謝分享

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2021-3-10 23:24:33 来自手机浏览器 | 显示全部楼层
还是用stm32cube MX吧,我属于被库函数劝退的那一部分…因人而异…
回复 支持 反对

使用道具 举报

发表于 2021-3-11 09:15:28 | 显示全部楼层
触景情伤 发表于 2021-3-10 23:24
还是用stm32cube MX吧,我属于被库函数劝退的那一部分…因人而异…

一样的,刚开始学stm32的时候学了半天搞明白了时钟树,外设的配置,过上一段时间不玩再搞的时候又忘了,再学一遍,又过上一段时间不玩又忘了,再学:sweat:
回复 支持 反对

使用道具 举报

发表于 2021-3-11 09:22:26 | 显示全部楼层
触景情伤 发表于 2021-3-10 23:24
还是用stm32cube MX吧,我属于被库函数劝退的那一部分…因人而异…

大家的学习目的不同就会有不同的学习方法,如果想全面的驾驭STM单片机,楼主的方法无疑是最靠谱的,我用STM只是想解决个案用途,所以我只琢磨怎样修改例程就可以了,当然修改例程的过程也要找资料了解寄存器或库的东西,但这种学习只是浅浅的了解,经常是程序好用了但过不多久也就想不起来当时咋弄的了,前年弄了好长一段时间,这两天又想玩玩竟然工程建立都忘了咋弄了:sweat:。
回复 支持 反对

使用道具 举报

发表于 2021-3-11 11:42:26 | 显示全部楼层
慕名而来 发表于 2021-3-11 09:22
大家的学习目的不同就会有不同的学习方法,如果想全面的驾驭STM单片机,楼主的方法无疑是最靠谱的,我用S ...

这两天又想玩玩竟然工程建立都忘了咋弄了


这是上年纪后大脑退化的典型表现,
我应对的方法就是记笔记,截图,拍照;


不过也不用怕,以前能搞定的,基本后面重复都能成功的。


回复 支持 反对

使用道具 举报

发表于 2021-3-12 09:21:36 | 显示全部楼层
lyy-cy 发表于 2021-3-11 11:42
这两天又想玩玩竟然工程建立都忘了咋弄了

确实如此,感觉弄啥东西开始的时候总要有一段时间来收收神而后才能进入状态,表现出来的就是效率低,思考过程中很多闪现的感觉能抓住的也越来越少了。
回复 支持 反对

使用道具 举报

发表于 2021-3-12 14:40:37 | 显示全部楼层
本帖最后由 inthsunshine 于 2021-3-12 15:27 编辑

开始我用标准库函数, 后来干脆寄存器编程, 到现在很适应,代码简练

回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-12 15:18:01 | 显示全部楼层
lyy-cy 发表于 2021-3-11 11:42
这两天又想玩玩竟然工程建立都忘了咋弄了

几天不弄,前面的就忘的差不多了,不经常搞,而且都是用别人的东西
改吧改吧直接就用了,记忆不深刻,只是具体原理懂了,细节还得看以前写过的东西
我C语言都忘的差不多了,研究别人的程序都得不停的百度
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-12 15:18:41 | 显示全部楼层
触景情伤 发表于 2021-3-10 23:24
还是用stm32cube MX吧,我属于被库函数劝退的那一部分…因人而异…

我现在都不知道什么是库,只是在照葫芦画瓢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-12 15:22:06 | 显示全部楼层
飞向狙沙 发表于 2021-3-11 09:15
一样的,刚开始学stm32的时候学了半天搞明白了时钟树,外设的配置,过上一段时间不玩再搞的时候又忘了, ...

业余爱好者与职业玩家的不同,呵呵呵,没办法,总也不用肯定得忘
回复 支持 反对

使用道具 举报

发表于 2021-3-15 11:49:49 | 显示全部楼层
先读手册吧,,,,不然都会被绕晕
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-29 08:35 , Processed in 0.234001 second(s), 17 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表