stm32

stm32学习笔记二

99封情书 提交于 2020-01-21 14:03:24
位操作 GPIO 1.模板使用与库函数模板一样 将笔记一中的HARDWARE文件夹及内容复制过来,如上图所示。 2.打开软件,编写主函数(main.c) 2.1头文件 # include "stm32f4xx.h" //不可缺少的 # include "led.h" //led定义的头文件 # include "delay.h" //延时头文件 2.2初始化函数 LED_Init ( ) ; delay_init ( 168 ) ; 2.3循环函数 while ( 1 ) { PFout ( 9 ) = 1 ; //将f9设置为高电平 PFout ( 10 ) = 1 ; //将f10设置为高电平 delay_ms ( 500 ) ; PFout ( 9 ) = 0 ; //将f9设置为低电平 PFout ( 10 ) = 0 ; //将f10设置为低电平 delay_ms ( 500 ) ; } PFout:位输出 使用方法: 如图,然后点击划线处,进入sys.h,如下图所示 n:是引脚号 F: 所选的GPIO F引脚 具体参数的理解有待后期学习深入了解 来源: CSDN 作者: 谦*谦 链接: https://blog.csdn.net/qq_15672897/article/details/104060094

使用keil建立标准STM32工程模版(图文详细版!)

我们两清 提交于 2020-01-20 21:06:30
1. 模板工程的创建(超级详细版,使用的是keil 4.5版本) 1.1创建工程目录 良好的工程结构能让文件的管理更科学,让开发更容易更方便,希望大家养成良好的习惯,使用具有合理结构的工程目录,当你着手于较大的软件项目时,类别分明,层次合理的工程目录结构会让你的开发管理化繁为简。 (1) 首先在一个目录下创建主文件夹,名字按需求取,这里取名为:(0)工程模板 (2) 在该文件夹里分别建立名字为 Project 和 Source 的文件夹。其中 Project 文件夹用来放置工程文件,而 Source 用来放置程序代码文件。 ↑ (3) 在 Project 文件夹里建立名字为 Obj 和 List 的文件夹,这是用来存放工程编译文件的。 ↑ (4) 然后在 Source 文件夹中建立3个名字分别为 Application , Drivers 和 STM32_FWLib 的文件夹。 Application 是用来放置应用程序文件的,例如 main.c, 和一些应用配置文件,如 stm32f10x_it.c , stm32f10x_conf.h 。 Drivers 是用来放置驱动程序文件的, STM32_FWLib 是用来放置ST固件库文件的。 ↑ (5) 在 Application 中添加一个名为 main 的文件夹。如果有其他应用程序

STM32 MDK5新建工程

微笑、不失礼 提交于 2020-01-20 12:47:06
在建立工程之前,建议在电脑的某个目录下面建立一个文件夹,后面所建立的工程都可以放在这个文件夹下面,这里建立一个文件夹为 Project。在Project文件夹下新建三个文件USER、BOJ、CORE、STM32F10x_FWLib; USER:代码工程文件都是放在 USER目录下,还用来存放主函数文件 main.c,以及其他包括system_stm32f10x.c 等等。 USER目录 CORE:用来存放核心文件和启动文件 BOJ:是用来存放编译过程文件以及hex 文件 STM32F10x_FWLib:存放 ST 官方提供的库函数源码文件 2)打开MDK5, 点击 MDK 的菜单: Project –>New Uvision Project ,然后将目录定位到刚才建立的文件夹Project 之下的USER目录,我们的工程文件就都保存到 USER 文件夹下面。工程命名为Project ,点击保存。 接下来会出现一个选择 CPU 的界面,就是选择我们的芯片型号。以STM32F103RTC6型号为例,所以在这里我们选择STMicroelectronics→STM32F1 Series→STM32F103→STM32F103RCT6 3) 点击 OK, MDK 会弹出 Manage Run-Time Environment 对话框,直接x掉就好; x掉后进入以下界面: 4) 现在我们去看看

stm32的两种固件下载模式:JTAG和SWD

江枫思渺然 提交于 2020-01-20 02:48:46
一、JTAG模式 这种模式一般有10pin的、14pin的和20pin的,尽管引脚数和引脚的排列顺序不同,但是其中有一些引脚是一样的。值得注意的是,不同的IC公司会自己定义自家产品专属的Jtag头,来下载或调试程序。 Test Clock Input (TCK) -----强制要求1:TCK在IEEE1149.1标准里是强制要求的。TCK为TAP的操作提供了一个独立的、基本的时钟信号,TAP的所有操作都是通过这个时钟信号来驱动的。 Test Mode Selection Input (TMS) -----强制要求2:TMS信号在TCK的上升沿有效。TMS在IEEE1149.1标准里是强制要求的。TMS信号用来控制TAP状态机的转换。通过TMS信号,可以控制TAP在不同的状态间相互转换。 Test Data Input (TDI) -----强制要求3:TDI在IEEE1149.1标准里是强制要求的。TDI是数据输入的接口。所有要输入到特定寄存器的数据都是通过TDI接口一位一位串行输入的(由TCK驱动)。 Test Data Output (TDO) -----强制要求4:TDO在IEEE1149.1标准里是强制要求的。TDO是数据 输出 的接口。所有要从特定的寄存器中输出的数据都是通过TDO接口一位一位串行输出的(由TCK驱动)。 Test Reset Input (TRST) -

“木兰”致歉背后的思考,为什么物联网也能用Python

ぃ、小莉子 提交于 2020-01-20 00:06:09
首先请允许笔者在博客中拉一下票,如果觉得文章不错,请各位读者扫一下下面的二维码,支持下! 1 月 15 日,中科院计算所发布国产编程语言“木兰”,号称面向物联网,还能用于幼儿编程,令笔者在内的物联网开发人员都为之一振,纷纷试用。 但纸里包不住火,很快就有开发者下载体验过后,发现所谓的自主编程语言其实就是Python的马甲,甚至连加密都懒得搞的解夺冠之后直接就现原形了。 开发者随即道歉,说明了针对STM32的芯片来讲,木兰的确只是Python的马甲而已。 随后中科院计算所也在下午发表声明,严肃处理当事人 不过令笔者不解的是,如何低级别的换皮事件,是怎么通过审核就得以对外发布的呢。 Python在物联网的应用 做为一个物联网行业的资深爱好者,以及各类开发板的骨灰级玩家,笔者在十年前就担任了CSDN嵌入式大版的版主,之前听说过在嵌入式开发板上跑JAVA的,也听说过跑.NET的,不过Python还能在开发板上运行,之前还真是没听说。 但是上网一查发现的确可以,MicroPython就是一个比较完整的针对STM32系列芯片的Python运行时环境。 其官方网址为: http://www.micropython.org/ Github地址为: https://github.com/micropython/micropython 固件下载地址为: http://www.micropython

STM32 USB 库介绍

余生长醉 提交于 2020-01-19 03:50:14
1 STM32 USB 库 2 STM32_USB-FS_Device_Driver-Low Layer 2.1 usb_regs 实现了硬件抽象层,提供了 usb 寄存器操作函数集合。 函数有两种调用的方式: 作为宏:_ 调用方式是:函数名(参数1,2…) 作为子程序:调用方式:函数名(参数1,2…) 2.2 usb_int 处理正确传输的中断服务程序。 低优先级中断,由 CTR_LP() 处理,用于控制模式、中断模式、批量模式(单缓冲区) 高优先级中断, CTR_HP() 处理,用于快速传输模式,比如同步模式、批量模式(双缓冲区) 2.3 usb_mem 用户内存区(user memory area) 和 USB 模块内存区 PMA(packet memory area)直接拷贝数据。 void UserToPMABufferCopy ( uint8_t * pbUsrBuf , uint16_t wPMABufAddr , uint16_t wNBytes ) ; void PMAToUserBufferCopy ( uint8_t * pbUsrBuf , uint16_t wPMABufAddr , uint16_t wNBytes ) ; 3 STM32_USB-FS_Device_Driver-medium Layer 3.1 usb_init 设备 usb

【STM32 HAL库学习】一、HAL库中GPIO初始化中指针和结构体理解

主宰稳场 提交于 2020-01-19 01:44:59
一、封装总线和外设基地址 # define FLASH_BASE 0x08000000UL /*!< FLASH(up to 1 MB) */ # define PERIPH_BASE 0x40000000UL /*!< Peripheral base address in the alias region */ /*!< Peripheral memory map */ # define APB1PERIPH_BASE PERIPH_BASE # define APB2PERIPH_BASE (PERIPH_BASE + 0x00010000UL) # define AHB1PERIPH_BASE (PERIPH_BASE + 0x00020000UL) # define AHB2PERIPH_BASE (PERIPH_BASE + 0x10000000UL) /*!< AHB1 peripherals */ # define GPIOA_BASE (AHB1PERIPH_BASE + 0x0000UL) # define GPIOB_BASE (AHB1PERIPH_BASE + 0x0400UL) # define GPIOC_BASE (AHB1PERIPH_BASE + 0x0800UL) # define GPIOD_BASE (AHB1PERIPH_BASE +

STM32的RAM与FLASH,启动流程

我只是一个虾纸丫 提交于 2020-01-18 10:16:21
STM32的RAM与FLASH STM32片上有两块内存分别是片上flash用来存储代码,片上ram相当于内存。 1.片上FLASH,RAM怎么计算? 这里我们解释一下,编译结果里面的几个数据的意义: Code:表示程序所占用 FLASH 的大小(FLASH)。 RO-data:即 Read Only-data,表示程序定义的常量,如 const 类型(FLASH)。 RW-data:即 Read Write-data,表示已被初始化的全局变量(SRAM) ZI-data:即 Zero Init-data,表示未被初始化的全局变量(SRAM) 有了这个就可以知道你当前使用的 flash 和 sram 大小了,所以,一定要注意的是程序的大 小不是.hex 文件的大小,而是编译后的 Code 和 RO-data 之和。 2.STM32之启动流程 来源: CSDN 作者: weixin_42323243 链接: https://blog.csdn.net/weixin_42323243/article/details/103863886

嵌入式到底该怎么学

孤街醉人 提交于 2020-01-18 00:27:43
前言  其实一直有人问我嵌入式怎么学,今天跟大家讲讲我的理解。因为嵌入式是一个泛的概念,可能很多人认为嵌入式就是嵌入式Linux。但是其实并不仅仅只有Linux, 像STM32,51单片机也属于这个范畴之内的,它们有的也可以跑协议栈,跑ucos等系统。所以其实嵌入式是有很多方向的,选择一个方向,做好,做精,都是有前途的。接下来,跟大家探讨一下嵌入式的一些方向,和如何去学习。我以前也是摸索着过来的,没人告诉我如何学习,也没有学习线路,所以走了很多弯路。所以希望这篇文章可以帮助到一些正在学习的人,当然这些内容可能有主观的东西,欢迎大家一起探讨吧。如下仅讨论软件方面 _ 。 以下内容对牛人不适用。 嵌入式方向 - 单片机开发  单片机开发在这个市场上的需求还是很大,因为制造业公司还是很多,单片机更多用在工业控制,机械控制等上面,当然也会涉及物联网。单片机有8位,16位,32位的,一般8位用得比较多的就是51单片机和STM8,32位用得比较多的就是STM32,还有NXP的芯片,比如K60,K22等。一般学完51和STM32之后,找个单片机的工作应该是没什么问题了。单片机的门槛其实并不高,但是做好也不容易就是了,可能因为门槛问题,导致薪资上面并不会特别高(能力牛逼者例外)。 - Linux应用开发  以前很多人问我“ Linux应用到底在做什么? ”。其实应用就是在做功能,在操作系统中

STM32与FPGA进行SPI通信

假装没事ソ 提交于 2020-01-17 23:42:11
一、器件 32单片机:STM32F407ZG FPGA :EP4CE6E22C8N 二、通信方式 STM32作为主机(软件); FPGA作为从机; SPI通信方式为0; 三、STM32源代码 1 #include "delay.h" 2 #include "stm32f4xx.h" 3 4 #ifndef __SPI_H 5 #define __SPI_H 6 7 #define SPI1_SCK PBout(2) 8 #define SPI1_MOSI PBout(3) 9 #define SPI1_MISO PBin(4) 10 #define CS PBout(5) 11 12 //CPOL=0,CPHA=0 13 u8 SOFT_SPI_RW(u8 byte); 14 //SPI初始化 15 void SPIInit(void); 16 17 #endif spi.h 1 #include "spi.h" 2 #include "delay.h" 3 #include "stm32f4xx.h" 4 5 //CPOL=0,CPHA=0 6 u8 SOFT_SPI_RW(u8 byte) 7 { 8 u8 i; 9 u8 Temp=0; //接收数据存储 10 SPI1_SCK = 0; 11 delay_init(168); //初始化延时函数 12 for(i=0;i<8