端午归来,阖家安康,开始学习STM32,要入门,当然还是blink,要blink要有板子,要有开发环境
好多小伙伴羡慕有电池,据说走不了航空,不知真假,正好可以用来测试LED,似乎都是红色的,下边就是开发环境,竟然发现电脑里似乎有
天宇说“stm 需要Keil mdk”
应该是有的,想起来了,原来是以前买的一个屏幕驱动带的,NEWBUY-TFT,牛掰TFT?
败家啊,一直没有学习
http://pan.baidu.com/s/1pJ3eEiJ
大概有1G+呢,还是压缩包,感觉现在要学的东西太多了,力不从心啊
从PDF看起吧:STM32神舟I号用户手册从入门到精通2013.9.30.pdf
找到了blink的素材,就不用外接LED了
寄存器版blink
#define __IO volatile typedef unsigned int uint32_t; typedef __IO uint32_t vu32; typedef unsigned short int uint16_t; #define GPIO_Pin_0 ((uint16_t)0x0001) /*!< Pin 0 selected */ #define GPIO_Pin_1 ((uint16_t)0x0002) /*!< Pin 1 selected */ #define GPIO_Pin_2 ((uint16_t)0x0004) /*!< Pin 2 selected */ #define GPIO_Pin_3 ((uint16_t)0x0008) /*!< Pin 3 selected */ #define GPIO_Pin_4 ((uint16_t)0x0010) /*!< Pin 4 selected */ #define GPIO_Pin_5 ((uint16_t)0x0020) /*!< Pin 5 selected */ #define GPIO_Pin_6 ((uint16_t)0x0040) /*!< Pin 6 selected */ #define GPIO_Pin_7 ((uint16_t)0x0080) /*!< Pin 7 selected */ #define GPIO_Pin_8 ((uint16_t)0x0100) /*!< Pin 8 selected */ #define GPIO_Pin_9 ((uint16_t)0x0200) /*!< Pin 9 selected */ #define GPIO_Pin_10 ((uint16_t)0x0400) /*!< Pin 10 selected */ #define GPIO_Pin_11 ((uint16_t)0x0800) /*!< Pin 11 selected */ #define GPIO_Pin_12 ((uint16_t)0x1000) /*!< Pin 12 selected */ #define GPIO_Pin_13 ((uint16_t)0x2000) /*!< Pin 13 selected */ #define GPIO_Pin_14 ((uint16_t)0x4000) /*!< Pin 14 selected */ #define GPIO_Pin_15 ((uint16_t)0x8000) /*!< Pin 15 selected */ #define GPIO_Pin_All ((uint16_t)0xFFFF) /*!< All pins selected */ #define RCC_APB2Periph_AFIO ((uint32_t)0x00000001) #define RCC_APB2Periph_GPIOA ((uint32_t)0x00000004) #define RCC_APB2Periph_GPIOB ((uint32_t)0x00000008) #define RCC_APB2Periph_GPIOC ((uint32_t)0x00000010) #define RCC_APB2Periph_GPIOD ((uint32_t)0x00000020) /************ GPIOB <*************/ typedef struct { __IO uint32_t CRL; __IO uint32_t CRH; __IO uint32_t IDR; __IO uint32_t ODR; __IO uint32_t BSRR; __IO uint32_t BRR; __IO uint32_t LCKR; } GPIO_TypeDef; typedef struct { __IO uint32_t CR; __IO uint32_t CFGR; __IO uint32_t CIR; __IO uint32_t APB2RSTR; __IO uint32_t APB1RSTR; __IO uint32_t AHBENR; __IO uint32_t APB2ENR; __IO uint32_t APB1ENR; __IO uint32_t BDCR; __IO uint32_t CSR; } RCC_TypeDef; /********* GPIOB管脚的内存对应地址 *******/ #define PERIPH_BASE ((uint32_t)0x40000000) #define APB2PERIPH_BASE (PERIPH_BASE + 0x10000) #define GPIOB_BASE (APB2PERIPH_BASE + 0x0c00) #define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) /************ RCC时钟 <*************/ #define AHBPERIPH_BASE (PERIPH_BASE + 0x20000) #define RCC_BASE (AHBPERIPH_BASE + 0x1000) #define RCC ((RCC_TypeDef *) RCC_BASE) /************ www.armjishu.com *******/ void Delay(vu32 nCount); int main(void) //main是程序入口 { /* 使能APB2总线的时钟,对GPIO的端口B时钟使能 */ RCC->APB2ENR |= RCC_APB2Periph_GPIOB; /*-- GPIO Mode Configuration速度,输入或输出 -----------------------*/ /*-- GPIO CRL Configuration 设置IO端口低8位的模式(输入还是输出)---*/ /*-- GPIO CRH Configuration 设置IO端口高8位的模式(输入还是输出)---*/ GPIOB->CRL &= 0xFFFFF0FF; GPIOB->CRL |= 0x00000300; while (1) { GPIOB->BRR = GPIO_Pin_2; Delay(0x2FFFFF); GPIOB->BSRR = GPIO_Pin_2; Delay(0x2FFFFF); } } void Delay(vu32 nCount) //通过不断for循环nCount次,达到延时的目的口 { for(; nCount != 0; nCount--); }
看得头大,看来还是得用库
/******************** (C) COPYRIGHT 2013 STMicroelectronics ******************** * File Name : main.c * Author : WWW.ARMJISHU.COM之STM32核心团队 JESSE * Version : V2.0.1 * Date : 01/09/2013 * Description : STM32神舟I号开发板 广州 *******************************************************************************/ #include "stm32f10x.h" void Delay(vu32 nCount) { for(; nCount != 0; nCount--); } int main(void) { GPIO_InitTypeDef GPIO_InitStructure; /* 配置神舟I号LED灯使用的GPIO管脚模式*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); /*使能LED灯使用的GPIO时钟*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); /*神舟I号使用的LED灯相关的GPIO口初始化*/ while (1) { GPIO_SetBits(GPIOA,GPIO_Pin_2); /* 熄灭LED指示灯 */ Delay(0x2FFFFF); GPIO_ResetBits(GPIOA,GPIO_Pin_2); /* 点亮LED指示灯 */ Delay(0x2FFFFF); } }
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 | |
【分享评测,赢取加热台】使用8051单片机驱动WS2812被打赏40分 |