
stm32
文章平均质量分 63
位文杰TOP
男,汉族,1996年6月出生于河南周口
展开
-
Keil5退出仿真调试卡死的解决办法
更新到keil5版本V5.25之后,目前一直到V5.29版本,都存在一个问题:退出调试模式时,有可能会卡死!此时需要在任务管理器中结束掉进程才能强制关闭keil工程。在Openedv论坛,正点原子解答网友帖子关于Keil_5.25版本Debug会卡死无法退出问题!!!这个方法对我的工程是有用的。我也查找了一些资料,均没有给出导致卡死的具体原因。恰好我有几个同事在升级到keil5 V5.29版本时也遇到了相同的问题。于是我向他们推荐了正点原子的方法。...原创 2022-08-10 16:44:28 · 3874 阅读 · 4 评论 -
FreeRtos 任务优先级和中断优先级
首先打出这个标题是为了便于搜索在这里赘述一下 这两者没有关系 只需要明白的是中断优先级高于任务的优先级 在单片机运行的过程中 中断来了就执行中断服务程序。在free-rtos中 任务优先级设置的数值越大 任务的优先级越高Unix任务优先: 进程优先级数值越小,进程优先级越高。在RT-Thread 任务优先级设置的数值越小 任务的优先级越高首先贴上Freertos的配置 任务优先级配置 1. FreeRTOS中任务的最高优先级是通过FreeRTOSConfig.h中的con原创 2022-06-22 11:02:03 · 8856 阅读 · 1 评论 -
KEIL仿真和vspd
看了很多的文章,写的都很简单(其实也很简单:))。给出个详细一点的教程。1. 利用VSPD将PC上的两个虚拟串口连接起来。如图我将COM2 和COM3连接起来。点击Addr pair。2. 可以看到Virtual ports上将两个虚拟串口连接到了一起了。3.虚拟串口准备就绪了。先将直接输入命令的方式来调试。我们打开KEIL MDK的,设置成仿真的模式。点DEBUG.在COMMAND串口输入:MODE COM2 38400, 0, 8, 1......原创 2022-06-22 10:42:18 · 662 阅读 · 0 评论 -
关于STM32调试器CMSIS_DAP的使用及注意事项
说明最近在淘宝上买了一个STM32F4x1系列的最小系统板提供CMSIS-DAP固件(进群领取固件),秒变CMSIS-DAP调试器技术交流QQ群: 970663546售后QQ群:1055686596 凭订单号进入1、关于KEIL设置如遇到RDDI-DAP Error,可能的原因及解决办法:线太长,因为DAP速度较快线太长干扰较大(JTAG最快10M,SWD模式1M最稳定)与开发板的通讯时序出错(检查KEIL配置、连线、供电等,建议目标板单独...原创 2021-08-13 15:17:33 · 15389 阅读 · 4 评论 -
STM32通用和复用功能I/O(GPIO和AFIO) ADC DMA
https://wenku.baidu.com/view/e3ce2a215901020207409c15.htmltypedef enum{ ADC_PORTA0 = ADC_Channel_0, ADC_PORTA1 = ADC_Channel_1, ADC_PORTA2 = ADC_Channel_2, ADC_PORTA3 = ADC_Channel_3, ADC_PORTA4 = ADC_Channel_4, ADC_PORTA5 = ADC_Ch...原创 2021-06-18 09:30:41 · 3410 阅读 · 5 评论 -
STM32使用 空闲中断接收不定长数据 不使用标志位
// USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); // 开启 USART 接收缓冲区非空中断 // USART_ITConfig(USART1, USART_IT_TXE, ENABLE); // 开启 USART 发送缓冲区空中断 添加总线空闲中断功能的优点:a) 可以准确地判断出串口数据是否接收完毕,不需要额外添加定时器作数据接收完毕超时检测,不仅可以减少了TIM定时器外设 的使用,提高系统性能,而且可以增强程序的可读性(...原创 2021-04-15 09:08:35 · 1582 阅读 · 4 评论 -
error 65: access violation at 0x40021000 : no ‘read‘ permission
开发环境:keil MDK V5.10操作系统:windows 7(32位)问题描述:使用MDK进行软件设计时没有使用ST官方的模板而是手动建立的工程,使用ST官方提供的3.5版本固件库。编译完全通过,在使用软件仿真时出现问题,表现为程序无法跳转到main入口,直接在SystemInit()函数就无法执行,调试窗口出现如标题所示的错误信息:error 65: access violation at 0x40021000 : no 'read' permission如下图所示,途中红圈分.原创 2021-01-05 10:28:33 · 7488 阅读 · 1 评论 -
stm32驱动TM1650 四位数码管
#include "TM1650.H"//written by JY-MCU,QQ:179383020//Contact:QQ:179383020,Website:http://jy-mcu.taobao.com//#ifndef _TM1650_H//#define _TM1650_H//#include <avr/io.h>//#include <util/delay.h>#include "stm32f0xx.h"#include "my_sys.h".原创 2021-01-05 10:27:52 · 7608 阅读 · 0 评论 -
STM32F0- GPIO 配置STM32F0的stm32f0xx.h中没有CRH和CRL函数
GPIO口介绍:4 个 32 位 配 置 寄 存 器 GPIOx_MODER:模式配置寄存器GPIOx_OTYPER:输出模式配置寄存器GPIOx_OSPEEDR:输出速度寄存器GPIOx_PUPDR:上拉下拉选择2 个 32 位数据寄存器GPIOx_IDR:输入寄存器GPIOx_ODR:输出寄存器1 个32 位置位 / 复位寄存器 GPIOx_BSRRA和B还含有1个32位锁定寄存器 GPIOx_LCKRA和B还含有2个32位替代功能寄存器原创 2020-12-30 18:18:03 · 3655 阅读 · 1 评论 -
STM32笔记 GPIO介绍及IO口操作 STM32F0 利用C语言位域实现仿位带操作
文章目录GPIO简介 工作方式 相关寄存器介绍 IO 操作步骤 IO口三种操作细解 附录:C语言相关 偏移地址与绝对地址GPIO简介GPIO:每个连接到I/O总线上的设备都有自己的I/O地址集,即所谓的I/O端口。类似51单片机的P0~P3,但与51单片机不同的是,对stm32的GPIO来说,使用前需要设置其工作方式。。STM32 的每个 IO 端口都有 7 个寄存器来控制其工作方式,而每一个寄存器都需要用32bit来控制。在STM32中,一组GPIO有16个I.翻译 2020-12-30 14:14:01 · 8917 阅读 · 0 评论 -
原子的模拟I2C配置有疑问,SDA_IN的时候,为什么还能IIC_SDA=1,也就是配置为输入的时候还能输出?
例程把数据IO上拉上拉输入原创 2020-10-06 16:04:00 · 3936 阅读 · 5 评论 -
STM32中断向量表的偏移量设置方法
STM32中断向量偏移总结一下在IAP升级中APP程序的中断向量表的偏移讲解中断偏移之前先看一下程序的启动流程STM32F4 的内部闪存(FLASH)地址起始于 0x08000000,一般情况下,程序文件就从此 地址开始写入。此外 STM32F4 是基于 Cortex-M4 内核的微控制器,其内部通过一张“中断向 量表”来响应中断,程序启动后,将首先从“中断向量表”取出复位中断向量执行复位中断程 序完成启动,而这张“中断向量表”的起始地址是 0x08000004,当中断来临,ST原创 2020-09-28 09:35:13 · 33083 阅读 · 5 评论 -
STM32F407内存卡存储DS18B20温度数据
//挂载FLASH. if(res==0X0D)//FLASH磁盘,FAT文件系统错误,重新格式化FLASH { LCD_ShowString(30,150,200,16,16,"Flash Disk Formatting..."); //格式化FLASH res=f_mkfs("1:",1,4096);//格式化FLASH,1,盘符;1,不需要引导区,8个扇区为1个簇 if(res==0) { f_setlabel((const TCHAR *)"1:AL...原创 2020-09-22 16:42:00 · 6116 阅读 · 0 评论 -
MDK5(KEIL5)设置输出bin文件
MDK5(KEIL5)中如何生成bin文件MDK内部自带有fromelf.exe工具,可以很方便的生成bin文件,并且生成的bin文件亲测可用。该工具的语法为:fromelf [options] input_file关于[options]的语法格式,该工具的语法为:fromelf[options]input_file其中options中的选项及说明如下:命令选项格式 命令 说明 --help ...原创 2020-09-22 10:14:14 · 10795 阅读 · 1 评论 -
FATFS txt 。xlsx 文件追加数据
while(1){ t++; // delay_ms(200); LED0=0;// *data_nanme=f_typetell("test");// printf(data_nanme);// LCD_ShowString(30,290,200,16,16,*u8 data_nanme) ; // sprintf(write_buff,"%04d\r\n",ad_value[i]*3300/4096);//res_ad=f_ls...原创 2020-09-21 18:12:53 · 6176 阅读 · 0 评论 -
FATFS嵌入式系统设计
http://blog.chinaunix.net/uid-20766895-id-2827635.html#include "sys.h"#include "delay.h"#include "usart.h"#include "led.h"#include "lcd.h"#include "key.h" #include "sram.h" #include "malloc.h" #include "usmart.h" #include "sdio_sdcard.h".原创 2020-09-21 18:01:12 · 5387 阅读 · 0 评论 -
数控电源
话说最近做了一个数控电源首先原理图来一个 看看原理既然讲到数控电源,难免讲解一下数控电源的知识点,升降压 MOS管,我所做的是BUCK降压电路 一、Buck电路原理图 Buck电路,又称降压电路,其基本特征是DC-DC转换电路,输出电压低于输入电压。输入电流为脉动的,输出电流为连续的二、Buck电路工作原理 当开关管Q1驱动为高电平时,开关管导通,储能电感L1被充磁,流经电感的电流线性增加,同时给电容C1充电,给负载R1提供能量。等效电路如图二 ..原创 2020-09-03 16:45:32 · 18337 阅读 · 3 评论 -
STM32端口IO方向设置问题
STM32端口IO方向设置问题STM32端口寄存器配置STM32 的 IO 口可以由软件配置成如下 8 种模式: 1、输入浮空 2、输入上拉 3、输入下拉 4、模拟输入 5、开漏输出 6、推挽输出 7、推挽式复用功能 8、开漏复用功能 每个 IO 口可以自由编程,但 IO 口寄存器必须要按 32 位字被访问。STM32 的很多 IO ...原创 2020-04-27 10:34:39 · 8733 阅读 · 0 评论 -
stm32修改堆栈大小(堆栈空间不足导致死机)
1. 设置堆栈空间大小在使用STM32编程时,一般情况下我们不会关注堆栈空间的大小,因为在STM32的启动文件中,已经帮我们预先设置好了堆栈空间的大小。一般默认的启动代码中,Stack栈的大小为:0x400(1024Byte),Heap堆的大小为:0x200(512Byte)。这也是为什么一个基础的工程编译后,RAM的空间也占用了1.6K左右的原因,因为堆栈的空间均分配在RAM中,可在编译的m...原创 2020-04-23 14:06:31 · 26330 阅读 · 2 评论 -
STM32定时器通道独立启停控制
STM32定时器通道独立启停控制待测试在main()中ch1_open();delay_ms(1000);ch2_open();delay_ms(1000);ch3_open();delay_ms(1000);ch4_open();delay_ms(1000);在ti...翻译 2020-04-20 08:51:31 · 11399 阅读 · 0 评论 -
STM32系列修改外部晶振以及代码的修改
STM32系列修改外部晶振以及代码的修改借用原子哥的一句话 很多初学者,用库函数开发STM32的时候不知道如何修改系统主频?不知道如何修改外部晶振频率? 这里,我们针对这两个问题,给大家做一个简单的教程。希望大家能够掌握,以后可以轻松修改主频 8M晶振修改为12M 主频72M不变 STM32F1的固件库,外部晶振频率的定义在stm32f...原创 2020-01-10 14:08:48 · 22080 阅读 · 1 评论 -
STM32的8种GPIO输入输出模式
输入模式-输入浮空(GPIO_Mode_IN_FLOATING)-输入上拉(GPIO_Mode_IPU)-输入下拉(GPIO_Mode_IPD)-模拟输入(GPIO_Mode_AIN)输出模式-开漏输出(GPIO_Mode_Out_OD)-开漏复用功能(GPIO_Mode_AF_OD)-推挽式输出(GPIO_M...转载 2020-01-03 09:31:27 · 14337 阅读 · 0 评论 -
..\SYSTEM\usart\usart.c(48): error: #260-D: explicit type is missing ("int" assumed)
..\SYSTEM\usart\usart.c(48): error: #260-D: explicit type is missing ("int" assumed)..\SYSTEM\usart\usart.c(48): error: #260-D: explicit type is missing ("int" assumed)SYSTEM\usart\usart.c(48) 第4...转载 2019-12-19 11:29:19 · 17790 阅读 · 4 评论 -
STM32读取旋钮编码器
视频演示 #define ROTATE_APAin(2)#define ROTATE_BPAin(3)s16 DATA=0;void EXTI2_IRQHandler(void){if(EXTI_GetITStatus(EXTI_Line2) != RESET){ if(ROTATE_A!=ROTATE_B) { DATA...原创 2019-12-17 11:31:41 · 19013 阅读 · 3 评论 -
stm32使用74HC595和74HC165
stm32使用74HC595和74HC165级联 165 和595十六位输入输出 void main(){while(1){ SENDVAL595=SENDVAL595|0x0000; SENDVAL5952=SENDVAL5952|0x00fF; SENDVAL165_595=SENDVAL165_595|0X0000;/...原创 2019-12-11 18:08:38 · 19914 阅读 · 4 评论 -
STM32串口3 映射和完全重映射 PB10 PB11 PD8 PD9 PC10 PC11
STM32F103共有五个串口,有时候在项目中,其他的引脚已经配置用了,重新改太麻烦STM32串口3 映射和完全重映射 PB10 PB11 PD8 PD9 PC10 PC11所有本次实验 使用了串口3的映射端口,配置和普通的类似只是注意要使用映射使能说明GPIO_PinRemapConfig(GPIO_FullRemap_USART3, ENABLE);...原创 2019-12-11 17:56:59 · 28398 阅读 · 0 评论 -
stm32 堆栈的理解
以下引用网上资料 理解堆和栈的区别(1)栈区(stack):由编译器自动分配和释放,存放函数的参数值、局部变量的值等,其操作方式类似于数据结构中的栈。(2)堆区(heap):一般由程序员分配和释放,若程序员不释放,程序结束时可能由操作系统回收。分配方式类似于数据结构中的链表。(3)全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化...原创 2019-12-02 19:14:20 · 14843 阅读 · 0 评论 -
stm32怎样将数组存到flash或SRAM的指定地址
方法:staticconstuint8_ts_acBmpLogo030[len]__attribute__((at(0X800F000)))={0xa0,0xb0,0xc0,0xd0........};这样就将数据存储到 地址为0X800F000的位置#include "absacc.h"static const char data[30]__at(0x00001000)= "s...原创 2019-11-23 08:58:37 · 25148 阅读 · 4 评论 -
STM32 单片机的BOOT0 和BOOT1使用注意事项
如图所示,一般情况下如果我们想用用串口下载代码,则必须配置BOOT0为 1, BOOT1为 0,而如果想让 STM32 一按复位键就开始跑代码,则需要配置 BOOT0 为 0,BOOT1 随便设,请参考正点原子的一键下载电路,这个电路比较好,不用繁琐的切换boot电平。原理图:启动方式:1,第一种启动方式是最常用的用户FLASH启动。默认启动方式。2,...原创 2019-11-08 09:30:53 · 55757 阅读 · 0 评论 -
单片机死机问题
最近做了一个项目 ,发现程序时不时的会重启 (加了看门狗),不加偶尔也会死机导致程序出现问题,查找资料 有以下的几种原因1.堆栈溢出;2.电源干扰;3.强电和弱电共地干扰;由于自己使用了串口整个程序一直的再接收数据可能数据一直在中断里面有没出来,或者数组越界了,不过前面那种可能性大一点,1.意外中断。是否打开了某个中断,但是没有响应和清除中端标志,导...原创 2019-11-08 09:17:12 · 15617 阅读 · 0 评论 -
STM32的 PA13/14/15 & PB3/4无法正常使用
PA13/14/15 & PB3/4默认配置为JTAG功能首先,STM32F10x系列的MCU复位后,PA13/14/15 & PB3/4默认配置为JTAG功能。有时我们为了充分利用MCU I/O口的资源,会把这些端口设置为普通I/O口。具体方法如下:在GPIO_Configuration(); // 配置使用的 GPIO 口:GPIO_PinRemapConfig(G...原创 2019-10-28 17:13:19 · 14452 阅读 · 0 评论 -
stm32输出正弦波
本次说明是看野火的开发板学习,做个笔记计算获取正弦波数据表; 2) 根据正弦波数据表的周期内点数和周期计算定时器触发间隔; 3) 初始化 DAC 输出通道,初始化 DAC 工作模式; 4) 配置触发 DAC 用的定时器; 5) 配置 DMA 自动转运正弦波数据表。 配置完成后,即可在 PA4、PA5 引脚中检测到信号输出。 首先生成正弦波数据表 要输出正弦...原创 2019-10-12 15:36:41 · 58195 阅读 · 56 评论 -
stm32配置三个串口 可以三个一块发送和接收数据,还用可以串口1发送串口2和串口3接收到的数据
#include "user_usart.h"#include "stm32f10x_usart.h"/*使用microLib的方法*//*int fputc(int ch, FILE *f){ USART_SendData(USART1, (uint8_t) ch); while (USART_GetFlagStatus(...原创 2019-06-13 19:28:41 · 26249 阅读 · 8 评论 -
串口接收数据并对数据进行处理
正点原子的串口中断函数如下:void USART1_IRQHandler(void) //串口1中断服务程序 { u8 Res;#if SYSTEM_SUPPORT_OS //如果SYSTEM_SUPPORT_OS为真,则需要支持OS. OSIntEnter(); #endif if(USART_G...原创 2019-05-29 17:28:04 · 26981 阅读 · 1 评论 -
STM32一键连接JQ8400-FLJQ8900语音模块程序分析
首先是JQ8900.C#include "JQ8900.h"#include "delay.h"//初始化PB5使能端口的时钟 //SDA IO初始化void JQ8900_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(...原创 2019-05-29 08:44:30 · 21123 阅读 · 7 评论 -
关于时钟晶振 速率 倍频
//关于时钟晶振 速率 倍频/*********//在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。//①HSI是高速内部时钟,RC振荡器,频率为8MHz。//②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。//③LSI是低速内部时钟,RC振荡器,频率为40kHz。//④LSE是低速外部时钟...原创 2019-06-12 17:13:23 · 16550 阅读 · 0 评论 -
嵌入式FreeRTOS操作系统中断优先级配
嵌入式FreeRTOS操作系统中断优先级配置(重要)2016年09月23日 16:49:48偏执灬阅读数:8865更多个人分类:嵌入式实时操作系统本章节为大家讲解FreeRTOS中断优先级配置,此章节非常重要,初学者经常在这里犯迷糊。对于初学者来说,本章节务必要整明白。12.1 NVIC基础知识12.2使用FreeRTOS时如何配置外设NVIC12.3 Fre...转载 2019-06-05 10:08:30 · 14744 阅读 · 1 评论 -
STM32F10x_ADC三通道逐次转换(单次、单通道软件触发)
STM32F10x_ADC三通道逐次转换(单次、单通道软件触发)Ⅰ、概述本文讲述关于STM32功能比较强大的ADC模块。ADC(Analog to Digital Converter)也就是模拟量转化为数字量,而STM32的ADC模块功能比较多,本文主要讲述“三条通道逐次转换(单次、单通道软件触发)”。根据笔者的经验,STM32所有系列芯片的ADC模块功能及配置都差不多。因此,本...原创 2019-04-09 16:49:24 · 14207 阅读 · 2 评论 -
stm32de关于rs485的串口2的配置
stm32串口1的配置if EN_USART1_RX //如果使能了接收//串口1中断服务程序//注意,读取USARTx->SR能避免莫名其妙的错误 u8 USART_RX_BUF[USART_REC_LEN]; //接收缓冲,最大USART_REC_LEN个字节.//接收状态//bit15, 接收完成标志//bit14, 接收到0x0...原创 2019-05-02 18:25:44 · 14187 阅读 · 0 评论 -
单片机中Sprint函数:
利用sprintf()函数转化为字符串发出去最近在做项目 ,用到了好几次sprint,这个函数功能甚是强大啊。是转换成字符串的利器。下面是我在网上找到的,感觉比较好的总结。感谢各位网友,大家一起进步!sprintf函数的用法1、该函数包含在stdio.h的头文件中。2、sprintf和平时我们常用的printf函数的功能很相似。sprintf函数打印到字符串中,而printf函数打印输出...原创 2019-01-01 14:00:22 · 15911 阅读 · 0 评论