- 博客(298)
- 资源 (9)
- 收藏
- 关注
原创 STM32的外部中断
STM32的每个IO都可以作为外部中断的输入STM32的中断控制器支持19个外部中断或事件请求线0~15:对应外部IO口的输入中断线16:连接到PVD输出线17:连接到RTC闹钟事件线18:连接到USB唤醒事件每个外部中断线可以:独立地配置触发方式,上升沿,下降沿或双边沿触发 触发或屏蔽 拥有专用的状态位外部中断的配置1. 初始化IO口为输入2. 开启IO口的时钟,复用时钟,注意使能AFIO时钟3. 将IO口和中断线进行映射,例如PA0映射到EXIT0中断线
2022-01-28 16:42:40 3888 1
原创 STM32的串口中断详解
中断配置使能接收中断中断服务函数1. 中断服务函数名称查找2. 中断服务函数3. 可以选择的串口中断类型此处定义其他文件中的声明extern u8 USART_RX_BUF[USART_REC_LEN]最大接收字节数extern u16 USART_RX_STA接收状态标记extern u16 USART_RX_STA bit15 bit14 bit13~0 接收完成标志 接收到0x0D标...
2022-01-28 16:08:42 15664 1
原创 STM32的串口
通信方式1. 并行通信数据的各个位同时传输2. 串行通信数据按位顺序传输数据传送方式:单工,半双工(不支持两个方向同时传输),全双工串行通信1. 同步通信带有时钟信号的就是同步通信SPI I2C2. 异步通信必须双方约定波特率UART 单总线常见的串行通信接口通信标准 引脚说明 通信方式 通信方向 UART TXD:发送,RXD:接收,GND:公共地 异步 全双工 单总线 DQ:发送/接收 异步
2022-01-27 22:33:16 4498
原创 STM32的中断优先级管理NVIC
Cortex M3内核支持256个中断,其中包含:16个内核中断 240个外部中断并且具有256级可编程中断设置STM32F1并没有使用Cortex M3的全部STM32有84个中断,其中包括:16个内核中断 68个外部中断(可屏蔽中断)STM32F103系列只有60个可屏蔽中断中断优先级分组首先,对STM32中断进行分组(在系统初始化时就分好组),组0~4.同时,对每个中断设置一个抢占优先级和一个响应优先级值分组配置是在寄存器SCB->AIRCR中进行配置组
2022-01-27 21:40:29 1698
原创 STM32的端口复用
STM32有很多内置的外设,这些外设的外部引脚都是与GPIO复用的,也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用时,此即复用复用配置前可以查看Datasheet端口复用的配置过程1. 首先,GPIO端口时钟使能2. 接下来,复用外设使能时钟3. 然后,根据要求初始化IO口为对应的模式...
2022-01-27 20:40:32 518
原创 STM32中的Systick定时器
目录概述Systick的寄存器CTRLLOADVALCALIB相关函数内核级别的SysTick_Config一种实现方法另一种实现方法delay_init函数delay_us函数概述Systick是一个定时器,Cortex M3,M4的芯片中都有Systick定时器通常用于实现延时函数,节约MCU资源Systick定时器就是系统滴答定时器,是一个24位的倒计时定时器,计到0为止从RELOAD寄存器中自动装载定时初始值只要不把它在Sy
2022-01-27 20:14:51 1545
原创 STM32的时钟配置
5个时钟源HSI,HSE,LSI,LSE,PLLHSE为高速外部时钟,频率范围4~16 MHzPLL的时钟源可以为:HSE/2 HSE HSI/2倍频系数为2~16倍STM32可以选择一个时钟信号输出到MCO脚,即PA8上,可以选择位PLL输出的二分频,HSI,HSE或系统时钟注意:任何一个外设之前,都必须使能其对应的时钟/** * @brief Reset and Clock Control */typedef struct{ __IO uint..
2022-01-27 17:57:48 2317 1
原创 嵌入式C语言的寄存器地址映射
对于微处理器,一切的底层配置,最终都是配置寄存器库函数的本质就是对寄存器的封装映射文件:stm32f10x.h根据Datasheet,STM32F1系列的GPIO共有7个寄存器,对应的结构体定义如下:/** * @brief General Purpose I/O */typedef struct{ __IO uint32_t CRL; __IO uint32_t CRH; __IO uint32_t IDR; __IO uint32_t ODR;
2022-01-27 14:47:38 2914 2
原创 嵌入式C语言入门操作
位操作6种位操作运算符位操作 数值操作位操作即按位进行运算操作GPIO->CRL &= 0xFFFFFF0F上面这句代码的意思是将GPIO的CRL寄存器的对应位清0看到&=操作,就要马上想到这是一个清0操作,那么具体是将哪些位清0呢?再去看后面的十六进制数中的那些位是为0的GPIOA->CRL |= 0x00000040上面这句话的意思是将GPIO的CRL寄存器的对应位置1看到|=操作,就要马上想到这是一个置1操作,那么具体是将哪些
2022-01-27 14:17:57 2301
原创 ATK BLE 01低功耗蓝牙配对调试经验
首先看好哪个是主机,哪个是从机,两个模块都通过USB转TTL与电脑相连。主机的指示灯闪烁快,从机的指示灯闪烁慢。首先配置主机查看主机的IP我们首先点击扫描波特率然后点击MAC地址可以看到,主机的MAC地址为B9AC4A4F3C0F如果这个时候主机还不是主机模式,那就点击主机模式接下来配置从机首先扫描波特率查看MAC地址可以看到,MAC地址为B9AC4A3FEBDA设置为从模块配对再次打开主机,这里设置一下主机输入AT
2022-01-25 21:17:05 5934 10
原创 STM32F103RCT6的GPIO
概述STM32F103RCT6共4组IO口16*3+3 = 51个IO口GPIOA0 ~ A15GPIOB0 ~ B15GPIOC0 ~ C15GPIOD0 ~ D2IO口的基本结构4种输入模式输入浮空输入上拉上图中上面打叉的部分开关闭合,上拉电阻约为30至50k输入下拉与上类似模拟输入4种输出模式开漏输出开漏复用功能推挽式输出推挽式复用功能3种最大翻转速度2MHz10MHz50MHz每组IO口包
2022-01-23 21:05:30 3502 1
原创 嵌入式C语言静态非静态全局局部变量辨析
栈区 用于存放局部变量也就是说,任何函数里面,我们定义的变量,不加任何修饰,那么这些变量都是保持在栈区里的 静态全局区 未初始化的静态全局区静态变量(static修饰的变量)或全局变量(在主函数外,不属于任何函数的变量),未经过初始化,则存在此区初始化的静态全局区全局变量,静态变量,赋过初值的,存放在此区 代码区 存放代码 文字常量区 存放常量普通的全局变量在函数外部定义的变量,只要是在main函数外,包括其他子函数外的变量,就是全局变量作用..
2022-01-22 23:05:16 589
原创 嵌入式C语言的函数声明
目录几种函数的类型函数的声明概念为什么要声明声明的方法什么时候需要声明如何声明什么时候需要声明如何声明几种函数的类型有参函数int fun(int a, float b){}无参函数int fun(void){}int fun(){}带返回值的函数在定义函数时,必须带有返回值类型,在函数体内,必须有return,若没有返回值类型,则默认返回int不带返回值,就是voidvoid fun(){}返回值类型 函数
2022-01-22 22:17:45 573
原创 嵌入式C语言 字符型数组
定义定义方式1一个字符一个字符地定义char c1 = {'c','k',' ','l'}定义方式2字符串赋值注意:使用字符串赋值方式要比一个一个字符逐一赋值多1个字节,用于存放字符串结束标志'\0'char c2[] = "ck l";我们在定义和初始化字符串数组时经常会这样写:char ch[32] = "";这是一种局部初始化,因为字符串默认有一个'\0',所以第一个字符就是'\0',没有初始化的位置也是'\0',这样可以清除字符数组中的垃圾字符,让每一个
2022-01-22 20:10:00 262
原创 嵌入式C语言 数组基础概念
数组的概念数组是若干个相同类型的变量在内存中有序存储的集合如果是不同类型,则无法通过数组进行存储数组在内存中会开辟一块连续的空间,因此数组元素个数不能无限大,否则会造成内存溢出例如:int a[10]; // 定义了一个整形的数组a,a是数组的名字,数组中有10个元素,每个元素的类型都是int类型,而且在内存中连续存储这十个元素分别是a[0],a[1],... ,a[9]a[0] 至 a[9] 在内存中连续地存储特殊的数组指针数组本质是一个数组,数组的元素是指针结
2022-01-22 19:59:01 686
原创 嵌入式C语言goto语句
goto语句用于在一个函数里面实现代码的跳转#include <stdio.h>int main (int argc, char *argv[]){ printf ("1\n"); goto NEXT; printf ("2\n"); printf ("3\n");NEXT: printf ("4\n"); return 0;}使用goto实现循环int i = 1;int sum = 0;JOOP:su
2022-01-22 19:34:34 238
原创 嵌入式C语言循环控制语句
for循环for (表达式1;表达式2;表达式3){循环体;}执行顺序:执行表达式1执行表达式2如果表达式2成立,则执行循环体,执行完毕后,再执行表达式3,再执行表达式2...直到表达式2不成立为止,循环结束while循环while(条件表达式){循环体;}执行顺序:首先判断while后面的表达式,如果表达式成立,执行循环体,执行完循环体接着再次执行条件表达式。如果表达式为真,则继续执行语句块,直到条件表达式为假,循环结束例如:...
2022-01-22 19:28:12 670
原创 嵌入式C语言switch语句
switch语句语法如下:switch (表达式) {case 常量表达式1:语句1;break;case 常量表达式2:语句2;break;default:语句3;break;}将常量表达式的值与switch后面表达式...
2022-01-22 19:17:03 775
原创 STM32F103 从8MHz晶振换到12MHz晶振对应的程序修改
现有的程序使用的无源晶振为8MHz,而手头的板子,使用的无源晶振为12MHz因此,需要对8MHz的程序进行修改,否则UART等外设时钟紊乱将直接导致波特率的出错,影响通信修改步骤如下1. 之前的晶振频率为8M,锁相环倍频系数为9,因此系统时钟频率为72M现在晶振频率为12M,要使得系统时钟频率为72M,则锁相环倍频系数为6因此在此处修改RCC寄存器2. 头文件中定义了HSE的频率为8HMz需要将其改为12MHz...
2022-01-20 19:59:01 3064
原创 完美解决Keil 打开时报错 Loading PDSC Debug Description Failed
报错原因首先明确,报错的原因是Keil版本与Package版本的不匹配解决方案更新Keil版本,package版本解决步骤1. 控制面板,卸载现有的Keil2. 下载新的MDK版本,我这边测试过,5.35是可以的,点击这里下载MDK5.35其他版本:MDK5.29,5.30,5.31,5.32,5.33, 5.34,5.35, 5.36和各种pack软件包镜像下载(2021-11-30) - 知乎3. 安装MDK5.354. 安装PackageMDK注册机:
2022-01-20 19:50:55 8293 1
原创 STM32中的时钟系统
STM32中的时钟系统概述5个蓝色背景的是时钟源SYSCLK是系统时钟,最重要的时钟,可以看到其他的外设的时钟都来源于系统时钟HSI RC高速内部约为8MHz,但不太稳定,可以作为系统时钟,灰色背景的梯形表示选择器HSE Os高速外部接晶振,例如8MHz,其可以直接作为选择器的输入,也可以分频后作为选择器输入,PLL表示锁相环,用于倍频,可以选择2-16,通过锁相环寄存器配置,产生的时钟为PLL_CLKCSS时钟监控系统一旦HSE失效,则自动切换到SYSCLK=HSI
2022-01-19 17:54:23 1003
原创 有源无源晶振总结
目录基础概念有源晶振和无源晶振的区别内部时钟与外部时钟外部时钟内部时钟石英晶体振荡无源晶体的等效电路实际电路中检测晶振的好坏STM32F10x系列Datasheet中关于振荡电路的描述基础概念晶体本身不能产生振荡信号,必须借助于外部的振荡器电路(两端施加电压),即:振荡信号的产生 = 振荡器件 + 振荡器电路其中,振荡器件除了晶振外,还可以是RC振荡电路,LC振荡电路等有源晶振和无源晶振的区别无源晶振严格意义上来说应该叫做晶体(元件名称为Cysta
2022-01-19 16:23:46 6820 1
原创 嵌入式C语言中的运算符
目录算数运算符关系运算符逻辑运算符位运算符算数运算符+-*/% 注意只有整数才能取余+=-=/=%=注意:printf如果要输出%,则需要使用%%关系运算符><==>=<=!=关系运算符的最终结果,只能是1或者0,分别表示真或者假逻辑运算符&& 逻辑与,两边都为真才真|| 逻辑或,两边只有有一个为真就为真!逻辑非要表示a < 10或 a > 10
2022-01-17 14:36:00 730
原创 嵌入式C语言构造类型与ASCII码表
构造类型概念:由若干个相同或不同数据类型构成的集合,该数据类型称为构造类型包括:数组,结构体,共用体,枚举即:基本类型只能定义1个变量保存1个数,构造类型可以1个变量保存多个数ASCII码表计算机只能识别二进制数,那么对于非数值型数据是如何表示的呢?将非数值型数据用数值型数据进行标识,即ASCII码表从0到127,这128个数值型数据可以表示字符注意:字符0-9和数值0-9之间的区别如果将数字放在字符或字符串中,就不能再把它当做一个数字了,而是一个字符char 字
2022-01-17 14:20:35 408
原创 嵌入式C语言基本数据类型的输出打印
#include <stdio.h>int main(int argc, char *argv[]){ char a = 'w'; printf("a = %c\n", a); short b = 100; printf("b = %d\n", b); int c = 9999; printf("c = %d\n", c); long d = 1234567; printf("d = %ld\n", d);.
2022-01-17 14:02:03 429
原创 嵌入式C语言数据类型
字符型 char 字符型,1字节(8位),单引号,例如 char ch1 = '1'; 整型short 短整型,2字节(16位),范围从-2的16次方到2的16次方-1 int 整型,4字节,范围从-2的32次方到2的32次方-1 long 长整型,对于32位系统是4字节,对于64位系统是8字节浮点型float 浮点型,4字节 double 双浮点型,8字节其他struct 结构体型 union 共用体型 enum 枚举型符号signed 有符号,可以定义char,
2022-01-17 13:37:59 1033
原创 贴片电阻电容标称换算
电容例如101,表示10后面带1个0,即10 0,单位是pF,即100 pF104,表示10 000 0,单位是pF,即100 nF或0.1 uF105,表示10 000 00,单位是pF,即1 uF106,表示10 000 000,单位是pF,即10 uF473,表示47 000,单位是pF,则47nF200,则20 pF电阻电阻也是类似的,单位为欧姆例如153,表示15 000,即15K6R8,表示6.8,R表示小数点102表示1K103表示10K10
2022-01-14 00:17:27 2960
原创 电容的作用
电容的结构电容就是两块导体之间夹着一块绝缘体,就像三明治一样,导体为阴极和阳极,绝缘体为介质。电容的作用隔直电容:隔直流通交流 旁路电容:为交流电路中某些并联的元器件提供低阻抗通路 耦合电容:作为电路模块之间的连接,允许交流信号通过并传输至下一级电路 滤波电容 温度补偿电容:改善个别元器件对于温度的适应性 计时电容:与电阻配合,确定电路的时间常数 调谐电容:对频率相关的电流进行调谐 整流电容:在预定时间内开关半导体开关元件 储能电容电容的分类无机介质电容:包括陶瓷电容和云母
2022-01-12 15:01:23 1266
原创 立创商城PCB库使用说明
封装命名规则例如:常见的封装命名带有芯片宽度的封装命名带有相邻引脚之间间隙的封装命名注意:8Pin 的SOIC,有 SOIC-8、SOIC8N、8SOIC、SOP8、SO8 等称呼3Pin 的 SOT-23 ,有 SOT23、SOT-23、SOT-23-3、SOT-23-3L 等称呼因此,如果没有特殊说明,立创 商城会尽量优先用较多见较合理的封装名。此外,带-和不带-是没有差异的,比如TQFP-48 和 TQFP48 一样如果有些封装..
2022-01-12 14:21:06 650
原创 硕博士学位论文参考文献Endnote格式分享
本文分享的Endnote格式是基于Chinese Std GBT7714修改的未修改前:修改后:修改样式的步骤:1. 首先把这里的空格删掉,插入制表符2. 悬挂这里选择All paragraph3. 选择这里的Configure formatting options选择如下即可正文中的英文字体为Times New Roman,字号为小四...
2022-01-10 23:23:58 5585
原创 手把手指导 Word for mac 如何在双栏文字中插入单栏图
首先将单栏文字改成双栏如下图所示接下来,比如要在第2页的开始插入一栏大图首先在上一页的末尾插入连续的分页符插入后是这样的在这里输入几个回车然后把图片粘贴过来,可以看到现在图片是双栏的选中图片后,选择单栏此时效果如下把图片拉大,此时即为单栏图在图片的后边,插入连续分节符,效果如下:这样也可以自己再加图注把几个回车删掉,效果如下:去掉显示所有符号,效果如下:在其他位置做这样的插入,效果也是类似的...
2021-12-18 14:42:05 1903
原创 Endnote使用方法——检查参考文献
投稿前需要仔细检查参考文献的格式首先,找到要投稿期刊的官网,点击For Authors找到Author Guidelines在Author Guidelines中找到References这里举个例子,打开以下链接:Author Guidelineshttps://publish.acs.org/publish/author_guidelines?coden=ascefjReferences:in the appropriate format which is, for examp.
2021-12-16 09:50:24 1014
原创 预估期刊2021年的影响因子
打开web of scienceWeb of Science数据库选择核心合集输入期刊名称和时间查询2021年影响因子,则时间为2019-01-01至2020-12-31选择论文和综述文章后精炼如图所示,一共有294条,这个是分母点击引文报告这些文章在2021年被引用4443次,则2021年预计影响因子为4443/294=15.11...
2021-12-11 20:00:17 1602
原创 STM32的通用同步异步收发器USART模块
通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换USART利用分数波特率发生器提供宽范围的波特率选择,它支持同步单向通信和半双工单线通信,还允许多处理器通信USART的主要特性如下:全双工的,异步通信 NRZ标准格式 分数波特率发生器系统(发送和接收共用的可编程波特率,最高达4.5Mbits/s) 可编程数据字长度(8位或9位) 可配置的停止位-支持1或2个停止位 发送方为同步传输提供时钟 单独的发送器和接收器使
2021-09-12 20:31:53 883
English for Writing Research Papers Useful Phrases.docx
2020-04-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人