分立元件 发表于 2020-1-1 19:59:10

研究STM32几天终于可以控制IO口了

实现了流水灯:lol

#include "stm32f10x.h" //头文件
void LED(void)             //PA口初始化
{
         
   GPIO_InitTypeDef GPIO_InitStructure;

         
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

                     
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_3 | GPIO_Pin_5| GPIO_Pin_7 ;


         
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

         
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

         
   GPIO_Init(GPIOA, &GPIO_InitStructure);   
}
void LED_GPIO(void)         //PC口初始化
{
         
   GPIO_InitTypeDef GPIO_InitStructure;

         
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);

                     
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15 | GPIO_Pin_1| GPIO_Pin_3 ;


         
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

         
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

         
   GPIO_Init(GPIOC, &GPIO_InitStructure);   
}
void Delay_ms(uint16_t time)//延时函数
{   
    u16 i=0;
    while(time--)
    {
      i=10000;      
      while(i--) ;   
    }
}
int main()
{

        LED_GPIO();   //初始化PC口
       LED();         //初始化PA口
        while(1)
        {
          
                                                                                                   
         
                                  GPIO_ResetBits(GPIOC,GPIO_Pin_1);            //关闭PC1
                                  GPIO_ResetBits(GPIOC,GPIO_Pin_3);             //关闭PC3
                                GPIO_ResetBits(GPIOC,GPIO_Pin_13);
                                  GPIO_ResetBits(GPIOC,GPIO_Pin_15);
                                  GPIO_ResetBits(GPIOA,GPIO_Pin_1);
                                  GPIO_ResetBits(GPIOA,GPIO_Pin_3);
                                GPIO_ResetBits(GPIOA,GPIO_Pin_5);
                                  GPIO_ResetBits(GPIOA,GPIO_Pin_7);
                                  Delay_ms(1000);
                                GPIO_SetBits(GPIOC,GPIO_Pin_13);         //点亮PC13
                  
                                  Delay_ms(1000);                                     //延时
                     
                                  GPIO_SetBits(GPIOC,GPIO_Pin_15);          //点亮PC15
                     
                                  Delay_ms(1000);
         
                                  GPIO_SetBits(GPIOC,GPIO_Pin_1);            //点亮PC1
                     
                                  Delay_ms(1000);
                                  
                                  GPIO_SetBits(GPIOC,GPIO_Pin_3);         //点亮PC3
                     
                                  Delay_ms(1000);
                     
                                 GPIO_SetBits(GPIOA,GPIO_Pin_1);             //点亮PA1
                     
                                 Delay_ms(1000);
                               
                                 GPIO_SetBits(GPIOA,GPIO_Pin_3);
                     
                                 Delay_ms(1000);
                                       
                                GPIO_SetBits(GPIOA,GPIO_Pin_5);
                     
                              Delay_ms(1000);
                                       
                                GPIO_SetBits(GPIOA,GPIO_Pin_7);
                     
                              Delay_ms(1000);
                               
                               
        }
}



iffi123 发表于 2020-1-3 11:14:29

无敌吴刚 发表于 2020-1-3 10:32
请问一下是哪本书?在哪下载啊?我也想看!!

STM32库开发实战指南

分立元件 发表于 2020-1-1 20:26:14

简单活着 发表于 2020-1-1 20:18
我的系统板刚到,环境还没有搭建好

系统搭建最麻烦了,我搞好久都不行,最后花钱淘宝请人安装KEIL5!

简单活着 发表于 2020-1-1 20:18:46

我的系统板刚到,环境还没有搭建好

fjf02386104 发表于 2020-1-1 20:25:37

HAL库是大趋势啊,配置起来也很简单:)

w6955 发表于 2020-1-1 21:49:32

分立元件 发表于 2020-1-1 20:26
系统搭建最麻烦了,我搞好久都不行,最后花钱淘宝请人安装KEIL5!

还有这个招数?那还不如直接买程序呢。

分立元件 发表于 2020-1-1 21:53:24

w6955 发表于 2020-1-1 21:49
还有这个招数?那还不如直接买程序呢。

自己安装编译软件太麻烦了,花十几二十块就能远程解决问题,自己也学到一些!偷偷的告诉你,其实我好多软件都是花钱安装的,因为自己安装成功,老是出现问题!

w6955 发表于 2020-1-1 22:00:26

分立元件 发表于 2020-1-1 21:53
自己安装编译软件太麻烦了,花十几二十块就能远程解决问题,自己也学到一些!偷偷的告诉你,其实我好多软 ...

那你可得做好备份,关系到钱包呢!

w6955 发表于 2020-1-1 22:11:24

学习无线电有什么用?直说,没任何用。就是提高自己认识、分析、掌握、控制事物的能力,其中最重要的就是毅力。高等级的无线电设备都不是自己可以简单做出来的,所以这个就是学习、锻炼。

分立元件 发表于 2020-1-1 22:22:42

本帖最后由 分立元件 于 2020-1-1 22:28 编辑

在贴一个按键控制LED的程序!

#include "stm32f10x.h"
void KEY_Init(void)                        //按键初始化
{
    GPIO_InitTypeDefGPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);      
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;                     
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;      

    GPIO_Init(GPIOA,&GPIO_InitStructure);      
}

void LED_GPIO(void)                     //PC口初始化
{
         
   GPIO_InitTypeDef GPIO_InitStructure;

         
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);

                     
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15 | GPIO_Pin_1| GPIO_Pin_3 ;


         
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

         
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

         
   GPIO_Init(GPIOC, &GPIO_InitStructure);   
}
   int main()
{
      KEY_Init();
        LED_GPIO();
        while(1)
        {
          
                      if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==0)   //判断按键是否按下
                  {
                     GPIO_SetBits(GPIOC,GPIO_Pin_1);
                      GPIO_SetBits(GPIOC,GPIO_Pin_3);                  //按下则输出高电平
                      GPIO_SetBits(GPIOC,GPIO_Pin_13);
                      GPIO_SetBits(GPIOC,GPIO_Pin_15);
                  }
                     else
                     {
                      GPIO_ResetBits(GPIOC,GPIO_Pin_1);
                      GPIO_ResetBits(GPIOC,GPIO_Pin_3);            //不按下则输出低电平
                      GPIO_ResetBits(GPIOC,GPIO_Pin_13);
                      GPIO_ResetBits(GPIOC,GPIO_Pin_15);
                                                }
         
                               
               
        }
}

分立元件 发表于 2020-1-1 22:24:36

w6955 发表于 2020-1-1 22:11
学习无线电有什么用?直说,没任何用。就是提高自己认识、分析、掌握、控制事物的能力,其中最重要的就是毅 ...

就是爱好吧,像别人喜欢钓鱼,喜欢冒险!

iffi123 发表于 2020-1-2 15:41:09

本帖最后由 iffi123 于 2020-1-2 15:45 编辑

这些网上的示例程序多的是,库函数开发本来就比较简单

不过我不喜欢用库函数控制IO, 喜欢象51那样直接位操作, 所以我找了个位段别名区的头文件,对IO口输入输出更简单,无需频繁调用 GPIO_Init, 这个库函数对应汇编有近100条指令

分立元件 发表于 2020-1-2 18:02:42

iffi123 发表于 2020-1-2 15:41
这些网上的示例程序多的是,库函数开发本来就比较简单

不过我不喜欢用库函数控制IO, 喜欢象51那样直接位 ...

是啊,51那种用习惯我用这种方式不太适应,GPIO.H这个没有研究过,要是不用这个不知道程序复杂不?

amo 发表于 2020-1-2 20:28:42

分立元件 发表于 2020-1-1 20:26
系统搭建最麻烦了,我搞好久都不行,最后花钱淘宝请人安装KEIL5!

还有这种操作……666

无敌吴刚 发表于 2020-1-2 22:04:33

哈哈!一大堆!果然是和51很不一样啊!看起来一个都看不懂!!哈哈!

分立元件 发表于 2020-1-2 22:38:48

无敌吴刚 发表于 2020-1-2 22:04
哈哈!一大堆!果然是和51很不一样啊!看起来一个都看不懂!!哈哈!

代码字符太长了,看的头晕,IO使用之前都要初始化后才能使用!子函数用的少,都是封装成头文件,其它和51没有太大区别,还有就是建工程,加头文件之类的操作有点麻烦,现在我都没有搞懂,都是直接使用别人建好的“工程模板”
页: [1] 2 3 4 5
查看完整版本: 研究STM32几天终于可以控制IO口了