
STM32
李工电子说
资深硬件工程师,软硬兼通。
展开
-
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET){}卡死
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET){}卡死while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) != SET){}卡死原创 2022-08-11 20:59:04 · 2504 阅读 · 0 评论 -
关于WCH沁恒以太网透传芯片CH9121的波特率问题
最近在做一个项目,计划用CH9121做音频传输,音频采样率是48KHz,每帧数据是16位,串口设置8N1,一个字节相当于10bps,然后48K*2*10=960000>921600,咋怎?退而求次,采用44.1K的采样率,可行。1、关于波特率的误差CH9121的数据手册没有明显告知921600时的波特率误差,我在用单片机调试时,配置了单片机波特率也是921600,但是中间通讯数据错误很多。后来想,波特率的的产生机制都是一样,无非就是系统频率和某个寄存器值的商,误差是因为和主频不是整数关系。那我原创 2022-05-18 15:54:51 · 2467 阅读 · 0 评论 -
STM32F030系列 HAL库FLASH读写(当EEPROM用)
此处已STM32F030F4P6为例,HAL库版本为Keil.STM32F0xx_DFP.2.1.11、解锁:程序下载后,默认Flash空间是保护的,所以要先进行解锁。大家都知道,解锁就是对FLASH_KEYR寄存器写两次数据,第一次是0x45670123,第二次是0xCDEF89AB,对应有现成的HAL库函数直接使用,HAL_FLASH_Unlock()。2、擦除:关于Flash闪存的电气特性:flash编程原理只能将1写成0,不能将0写成1,等同于按位与的关系。比如经过擦除后的存储状态是0xFF原创 2022-05-15 20:56:09 · 6561 阅读 · 2 评论 -
MDK V5下载STM32F0程序是提示Error: Flash Download failed - “Cortex-M0“
我在用Keil uVision5(MDK V5)调试一个STM32F030的板子,用ST-Link的SWD模式下载程序时弹出窗口,调试Error: Flash Download failed - "Cortex-M0"。我的板子上的STM32F030单片机是从另外一个板子上换过来的,之前有烧写过程序。而且之前的程序设置的是外部晶振,现在的板子上是没有晶振的,当前程序是设置为内部晶振。烧写不进去,参考了一些网上的解决方法,MDK里面相关的FLASH地址等设置是没问题的。最后的解决方法是:先用ISP下.原创 2020-07-24 06:58:42 · 3177 阅读 · 0 评论 -
关于STM32F030的ADC采样在while(ADC_GetFlagStatus(ADC1, ADC_FLAG_ADRDY)==RESET)死循环死等待的问题
前提:1、单片机是STM32F030F4P62、软件平台有用过两个,一个是Keil uVision5、一个是CooCox(1.7.8版本)3、采用的库是1.5版本的标注库(STM32F0xx_StdPeriph_Lib_V1.5.0)调试中,怎么看下面的代码都觉得没问题,可是通过插入打印或者LED指示的调试,发现程序就卡死在while(ADC_GetFlagStatus(...原创 2019-10-27 09:31:19 · 11662 阅读 · 3 评论 -
关于STM32F0系列多路ADC单独采样数据相同问题的处理
先看一下,大家认为“正确”的代码void MYADC_init(void) { //时钟使能 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); //GPIO配置 GPIO_InitTypeDef PORT_ADC; PO原创 2017-12-29 13:01:48 · 14087 阅读 · 3 评论 -
STM32入门学习之DMA(STM32F030F4P6基于CooCox IDE)
本代码基于STM32F030F4P6,用例为DMA控制串口发送,需要注意以下几点1、注意串口IO配置,包括IO配置和复用功能选择2、STM32F030系列的DMA不支持外设到外设,STM32F030只有DMA1,没有DMA23、注意不同外设对应不同DMA通道,而且不同芯片的通道也不一定相同,注意看数据手册直接代码如下:#include "stm32_lib/inc/st原创 2016-12-13 06:46:08 · 6890 阅读 · 0 评论 -
STM32F030C8T6 STM32F030R8T6 STM32F030 STOP低功耗模式配置 11uA
1、进入睡眠的关键语句RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);2、进入低功耗需要的配置,GPIO配置原则:不回路,不悬空输入。下面是将所有IO输出为0//输出GPIOA->MODER = 0x55原创 2016-02-18 12:35:09 · 7828 阅读 · 0 评论 -
STM32入门学习之ADC(STM32F030F4P6基于CooCox IDE)
#include "stm32_lib/inc/stm32f0xx_rcc.h"#include "stm32_lib/inc/stm32f0xx_adc.h"#include "stm32_lib/inc/stm32f0xx_gpio.h"int main(void){ //时钟配置 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE原创 2015-12-16 22:32:56 · 13206 阅读 · 1 评论 -
STM32入门学习之GPIO(STM32F030F4P6基于CooCox IDE)(寄存器操作版)
依然,直接上代码#include "stm32f0xx.h"#include "stm32_lib/inc/stm32f0xx_rcc.h"#include "stm32_lib/inc/stm32f0xx_gpio.h"int main(void){ //IOPAEN=1,使能GPIOA的时钟 RCC->AHBENR |= RCC_AHBENR_GPIOAEN; //设置原创 2015-09-29 07:06:07 · 12048 阅读 · 2 评论 -
STM32入门学习之GPIO(STM32F030F4P6基于CooCox IDE)(二)
不好意思,忘了,使用CooCox IDE,还需要安装交叉编译工具gcc-arm-none-eabi-XXXXXXXXX版本,自己下载https://launchpad.net/gcc-arm-embedded/+download安装完成后,对Coocox IDE进行配置Project——Select Toolchain Path,选择刚才安装的GUN Tools ARM Embed原创 2015-09-26 14:05:55 · 3861 阅读 · 0 评论 -
STM32入门学习之GPIO(STM32F030F4P6基于CooCox IDE)(三)
先直接上代码#include "stm32f0xx.h"#include "stm32_lib/inc/stm32f0xx_rcc.h"#include "stm32_lib/inc/stm32f0xx_gpio.h"int main(void){ //1、使能时钟 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); //原创 2015-09-26 15:00:07 · 10393 阅读 · 0 评论 -
STM32入门学习之GPIO(STM32F030F4P6基于CooCox IDE)(一)
1、CooCox IDE当前最新版本为V2,不过个人看网上的示例大都是基于旧版本的,个人也试过新版本,发现一些操作还不习惯,在此也还是介绍旧版本1.7.8。http://www.coocox.org/software/coide.php 2、运行CoIDE,点击菜单栏的Project——New Project,填写项目名称HelloGPIO 3、选择Chip原创 2015-09-26 13:46:07 · 6802 阅读 · 0 评论 -
STM32入门学习之EXTI外部中断(STM32F030F4P6基于CooCox IDE)
下面的代码,是把PA0当做一个按键口,芯片内部上拉,按键闭合时,IO口被拉低,触发中断。#include "stm32_lib/inc/stm32f0xx_rcc.h"#include "stm32_lib/inc/stm32f0xx_exti.h"#include "stm32_lib/inc/stm32f0xx_gpio.h"#include "stm32_lib/inc/stm32原创 2015-11-14 09:09:36 · 15487 阅读 · 1 评论 -
STM32入门学习之SysTick系统定时器(STM32F030F4P6基于CooCox IDE)
#include "stm32_lib/inc/stm32f0xx_misc.h"#include "stm32_lib/inc/stm32f0xx_rcc.h"int main(void){ //配置初值,系统定时器是倒数计时器,减1的 //注意:该函数的参数类型虽为uinit32_t,实际最大值为16777215,也就是2^24 SysTick_Config(SystemCoreC原创 2015-11-12 21:44:24 · 7136 阅读 · 0 评论 -
STM32入门学习之USART中断(STM32F030F4P6基于CooCox IDE)
#include "stm32f0xx.h"#include "stm32_lib/inc/stm32f0xx_rcc.h"#include "stm32_lib/inc/stm32f0xx_gpio.h"#include "stm32_lib/inc/stm32f0xx_usart.h"#include "stm32_lib/inc/stm32f0xx_misc.h"#include原创 2015-11-11 00:38:18 · 8581 阅读 · 0 评论 -
STM32入门学习之USART(STM32F030F4P6基于CooCox IDE)
#include "stm32f0xx.h"#include "stm32_lib/inc/stm32f0xx_rcc.h"#include "stm32_lib/inc/stm32f0xx_gpio.h"#include "stm32_lib/inc/stm32f0xx_usart.h"int main(void){ //1、使能时钟 RCC_APB2PeriphClockCmd原创 2015-10-16 07:13:00 · 11251 阅读 · 0 评论