stm32
redgragon0
这个作者很懒,什么都没留下…
展开
-
STM32F103 flash地址与数据存入时高低位的关系
这几天做东西用到了stm32f103的内置flash模拟eeprom,其中有个32位的数据需要存储,但是正点原子的例程并没有给出直接存取32位数据的函数,于是乎自己写了个。首先复习概念,在stm32f103中:8比特(bit)=1字节(Byte)4字节(Byte)=1字(Word)存入32位数据**(错误示范)**void STMFLASH_WriteOneWord(u32 WriteA...原创 2019-12-01 00:31:13 · 2419 阅读 · 0 评论 -
SPI写入数据的时候记得读取,不然会一直读出0xFF!
真的是越来越不清醒了,写一个SPI字节的时候居然忘记要读取数据了,因为SPI为双线结构,只要时钟线有信号,两条线上都会有信号,我就只发送数据,要读取的数据的时候再读取,这样子会造成溢出标志OVR被置1,因为平时的数据没有被读取,又来一个,真正要读取的时候,就会发现,怎么都是FF,因为发送OVR之后,还是DR的内容不会被修改,所以都是FF。查找原因过程:通过逻辑分析仪看到出来的数据明明是0x69,...转载 2019-11-28 18:51:51 · 6779 阅读 · 3 评论 -
STM32 PC13,14,15引脚可同时作为输出
在中文手册中(参照2009年4月 STM32F103x8B数据手册 英文第10版 翻译),PC13,14,15特别注明了不得同时作为输出:但是在官网最新的手册中没有发现这个限制,不知道是改动了还是本来就没写:英文手册地址:https://www.st.com/resource/en/datasheet/stm32f103c8.pdf...原创 2019-11-16 18:24:57 · 1798 阅读 · 1 评论 -
STM32 USB时钟设置
原则:STM32 的USB时钟不能超过48MHZ,因此如果时钟源为72MHZ,就需要进行1.5分频:RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_1Div5);如果时钟源为48MHZ,则进行1分频即可:RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_Div1); STM32的时钟树如下: ...转载 2019-04-17 11:46:44 · 4368 阅读 · 0 评论 -
STM32F103学习笔记(一)使用内部rc振荡器做时钟源
写在前面:标题“使用内部rc振荡器做时钟源”其实不太准确,实际应该是“使用内部rc振荡器经PLL倍频后做时钟源”,为了简单本文统一用“使用内部rc振荡器做时钟源”。在做开发时,一些场合对时钟要求不是非常精确的时候可以省掉外部晶体和两个电容,好处是可以简化布线,节省成本并进一步降低功耗;缺点也很明显,HSI不够精准,官方给出的误差是在1%(25摄氏度)。根据手册,USB时钟不能用HSI经PLL后得...原创 2019-04-17 15:16:49 · 8239 阅读 · 0 评论 -
STMCube学习记录(二)点亮LED
直接上图,在GPIO选项中如下配置,下面几个选项:GPIO output level:默认输出电平GPIO mode:GPIO模式,有推挽和开漏两种GPIO Pull-up/Pull-down:上下拉模式Maximum output speed:输出速度,有Low(2MHz),Medium(10MHz)和High(50MHz)[针对F103系列,F4等速度更快如何对应没有验证]Use...原创 2019-08-18 21:11:51 · 2112 阅读 · 1 评论 -
STMCube学习记录(三) 打开Debug口
很多人在用Cube生成工程正确编译并烧录后,发现再也不能烧录了,keil也找不到目标板了。很明显这是调试接口被关闭了,打开就好了。如上图,在侧边SYS中找到debug,根据需求选择SW,JTAG(4),JTAG(5),重新生成工程并编译,烧录就可以解决。如果之前烧录了没有debug口的程序导致识别不了目标板,可以按下板子上的reset后点击烧录按键,再立刻放开reset,即可正常烧录。如果d...原创 2019-08-18 21:30:27 · 507 阅读 · 0 评论 -
STMCube学习记录(四) 定时器中断 LL库(Timer 2)
打开定时器配置,从模式选择关闭,时钟源选择内部时钟,使能中断,记得配置下面的Parameter Setting,就跟之前配库函数一样配就行。配置完Timer去左边NVIC里设置下,TIM2中断使能勾上。其他LED的GPIO配置和之前一样PC13,然后选择用LL库生成程序(HAL的网上也有很多教程自行百度)。生成后打开工程,并不是直接编译就能让LED闪烁的,打开“stm32f1xx_it...原创 2019-08-18 23:36:22 · 4983 阅读 · 0 评论 -
STMCube学习记录(一)RCC时钟源配置
打开STMCube的RCC配置界面如下图,在用cube配置时钟时,有下面三个选项Disable(禁用)BYPASS Clock Source(旁路时钟源)Crystal/Ceramic Resonator(晶体/陶瓷晶振)对于BYPASS Clock Source(旁路时钟源),就是由外部给定一个时钟信号,是单向的,猜测一般用于作为同步时钟。可以在Clock Configuration...原创 2019-08-15 00:33:01 · 7644 阅读 · 0 评论 -
WS2812B使用备忘
在淘宝卖的ws2812b rgb灯虽然都是同一名称,但是各家的数据格式都有有微小的不同,参考各家数据手册会发现高低电平的时间有许多不同。如在淘宝“南方光电”买的ws2812b数据手册如下:再如“糊糊蝶照明”RGB灯条的数据手册:网上还有其他版本的数据手册,时间也不一样,有兴趣可以搜一搜。以上时间差距会让颜色不准,在使用的时候要注意。除了手册差异(数据差异)导致的问题,还有不同写法io...原创 2019-08-31 18:55:08 · 3577 阅读 · 0 评论 -
STM32F103学习笔记(三) 串口的标志位 USART_FLAG_TXE 和USART_FLAG_TC的理解
http://www.openedv.com/posts/list/0/58919.htm原创 2019-04-21 03:26:11 · 4622 阅读 · 0 评论 -
STM32关于UART4_IRQn未定义的解决方法(identifier "UART4_IRQn" is undefined)
这种问题一般出现在中容量(或小容量)向大容量移植程序的时候,出现原因也很简单,因为中容量设备里没有UART4自然也就没有这个中断了。我是由STM32F103C8T6向ZET6移植程序时出现的。解决方法是:1.确认你的设备是大容量设备(确认有UART4)2.确认C/C++中define的是“STM32F10X_HD”而不是“STM32F10X_MD”3.确认替换了启动文件(“startup_...原创 2019-03-23 17:17:39 · 7139 阅读 · 1 评论 -
stm32——Fatfs文件系统读写文件
因项目需求需要移植fatfs文件系统,参考了正点原子的战舰例程。 使用mcu为stm32f103zet6,spi的sd卡模块,8Gsd卡。例程为mini板(mcu:stm32f103rct6)的 ALIENTEK MINISTM32 实验29 FATFS文件系统实验,zet6的例程由于是sdio模式所以没有选用。初始化 这里只初始化sd卡.e2prom部分删除了 mem_init...原创 2018-08-18 21:13:03 · 20284 阅读 · 3 评论 -
STM32F103C8T6在Keil编译器中报错error: #67: expected a "}"的解决办法
这种错误一般为以下形式 ..\USER\stm32f10x.h(298): error: #67: expected a “}” 且一般为从大容量产品移植后出现(ZET6,RCT6等) 此时查看C/C++中define,由改为 STM32F10X_MD,USE_STDPERIPH_DRIVER...原创 2018-08-26 22:03:55 · 13786 阅读 · 9 评论 -
【转载】STM32F103C8T6 FTT音乐频谱分析与显示
原标题:stm32f103+FFT+OLED的音乐频谱制作(干货 只需三步即可) 为防止自己找不到先转再看。 以下为原文。 效果演示:https://www.bilibili.com/video/av29366031/...转载 2018-09-03 16:01:04 · 11417 阅读 · 2 评论 -
STM32F10x互补输出TIM_OutputState,TIM_OutputNState的意思
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Disable 禁止OC输出TIM_OutputState_Enable 开启OC输出到对应引脚TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Dis...转载 2018-11-21 23:05:45 · 6549 阅读 · 0 评论 -
stm32f103c8t6移植Fatfs文件系统出现的一些问题
一、环境keil5,使用库函数二、移植对象stm32f103zet6 >> stm32f103c8t6三、连接方式硬件SPI1(PA5,6,7)四、主函数代码#include "stdio.h"#include "delay.h"#include &quo原创 2018-12-11 23:15:12 · 6203 阅读 · 3 评论 -
stm32外设的使能,失能,复位的区别
首先明确的是,在STM32中所有外设正常工作的前提是使能了相应的外设,有的可能只用使能一个(如GPIO),有的使能两个(如GPIO和USART),有的可能需要使能三个(如GPIO,AIFO,TIM)。总而言之,只有使能了外设时钟外设才能工作。所以外设使能实际使能的是外设的时钟,而与之相应的外设失能也是使外设时钟失能。外设失能后配置外设是没有作用的除非重新使能。与以上两个不同的是外设复位,它是通...原创 2019-02-15 12:48:25 · 7989 阅读 · 1 评论 -
关于GPIO不输出高低电平的一种可能情况
如果是从GPIO输入直接复制过来改成输出模式的情况,请一定记得加上配置输出速度。GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz,也可以是10M,2M血与泪的教训。...原创 2019-02-15 16:07:35 · 4742 阅读 · 0 评论 -
STM32F103 TIM1输出PWM改变占空比反应迟缓
最近做机械臂的时候用到了TIM1的四路PWM控制四个舵机,结果出现了舵机不受控制或者反应迟钝的问题,用示波器看波形发现波形改变比控制指令慢了2秒左右,换板子后依旧存在该问题,故怀疑初始化程序配置。在查阅了正点原子例程控制TIMER3的PWM输出后修改程序仍存在上述问题,但TIMER3直接输出就没有延迟问题。研究两天后觉得是高级定时器和通用定时器存在一些差异,查阅手册和请教群友后初步认定问题出在t...原创 2019-03-08 22:37:34 · 4613 阅读 · 0 评论 -
中移物联网入门记录(1)
中国移动之前搞了个活动可以申请STM32的物联网开发板,心痒申请了一下,虽然最后没有申请到但是从学长那里白嫖了一块麒麟座MINI开发板,主控STM32F103CBT6,板载SH120,ESP8266和CH340。个人觉得这块板子设计的作用就是用来实现本地数据上传到OneNet平台的,所以资源较少也很正常。1.完成的的OneNet平台的注册等等,这个在申请板子的时候就做过了就不提了。2.添加产品...原创 2019-03-04 00:53:17 · 901 阅读 · 0 评论 -
关于STM32宏定义的产品类型名称解释
startup_stm32f10x_ld_vl.s: for STM32 Low density Value line devicesstartup_stm32f10x_ld.s: for STM32 Low density devicesstartup_stm32f10x_md_vl.s: for STM32 Medium density Value line devicesstartu...原创 2019-03-14 22:47:54 · 603 阅读 · 0 评论 -
STM32F407获取系统时钟方法
获取当前时钟频率方法(库函数)RCC_ClocksTypeDef是一个结构体,定义一个全局变量:RCC_ClocksTypeDef Get_RCC_Clocks; RCC_ClocksTypeDef结构体定义如下(库函数里有)typedef struct{ uint32_t SYSCLK_Frequency; /*!< returns SYSCLK clock f...原创 2018-07-18 04:22:26 · 4501 阅读 · 0 评论