推荐阅读最新更新时间:2024-11-01 21:59
STM32F103 CAN中断发送功能的再次讨论
我在之前的一篇博客日志中,写过关于CAN发送功能如何使用,但是当时由于时间匆忙,赶项目,按照对USART中断发送的理解,在数据成功发送出去的情况下,写了那篇误人子弟的日志,在这里向大家道歉,实在不好意思,现在我重新阐述下CAN中断发送原理。 1、USART发送中断与CAN发送中断的区别 USART发送中断,是因为发送缓冲区为空,CAN发送中断的中断源是成功(或者abort)发送一次,正是这种区别误导了我。 2、我之前的CAN中断发送的处理方法是,将数据填充到发送缓冲区,由CAN中断提取进行发送,为了启动CAN的发送,我写了一句话CAN- sTxMailBox .TIR |= 1;就是启动发送,我以为在这以后CA
[单片机]
STM32F103的启动配置
如题,谷歌百度一堆,以及查看数据手册,都知道STM32F103芯片靠BOOT0和BOOT1以及NVIC中断向量表的相关配置,可以做到3种启动模式:从内置用户FLASH启动、从SRAM内存启动、从系统存储器启动。 一般地球人都是用FLASH启动,又可以烧进去程序,又可以在线调试。或者用SRAM启动,可以调试小函数。 二者的启动方法在数据手册都有很容易的说明,谷歌百度也可以马上查到。 我想说的是,如何从系统存储器启动?如果是定义NVIC中断向量表,只能使用: NVIC_SetVectorTable(0x20000000, 0x0);//SRAM启动(芯片内存) NVIC_SetVectorTable(0x08000000, 0x0)
[单片机]
STM32F103外部晶振由8M变为12M
官方提供的库文件中,HSE(外部高速时钟)默认为8MHz,最高主频为8*9=72MHz,如果将HSE变为12MHz,不修改库文件的话,最高主频则变为12*9=108MHz,最典型的问题就是USART可以通信,但是接收到的数据与发送的不一致,并且找不到啥原因,害的我瞎折腾了一整天,下面列举需要修改的地方。 1、修改stm32f10x.h中的HSE_VALUE,原本的代码如下: #if !defined HSE_VALUE #ifdef STM32F10X_CL #define HSE_VALUE ((uint32_t)25000000) #else #define HSE_VALUE ((uint
[单片机]
stm32f103 adc采集 程序配置
这个例程是采集电压adc值 对于通道几是如何选择的: 这里在adc初始化函数中,设置通道几的采样率只是设置要使用的通道几,并不是选择用通道几,真正的选择用通道几是在Get_Adc()AD采样这个函数中,ADC1- SQR3|=ch;这里的配置,因为SQR3的0~4位 是设置在规则序列转换中要转换的通道,又因为只有一个通道需要转换,所以就用这里来设置。 对于选择IO口几对应的通道几具体要看原理图或者芯片手册: 例如 void Adc_Init(void) { //先初始化IO口 RCC- APB2ENR|=1 2; //使能PORTA口时钟 GPIOA- CRL&=0XFFF0FFFF;//PA4 anolo
[单片机]
基于stm32f103zet6点亮LED之启动文件
终于开始点亮第一个LED了,惯用思维,从模仿开始!前两天一直在做最小系统板,今天上午才调试出来,测试程序也是的别人的,从现在开始就来仔细分析一下这第一个点灯大法吧! 由于在开始学习stm32之前已经接触过相关的指导书了,所以现在学起来还是比较轻松的,废话不多说,直接从启动文件开始吧! 启动文件这部分和arm11的还是很类似的,是开发板上电后执行的第一段代码,唯一不同的感觉的就是比arm11的启动文件简单多了,下面的一些代码解释都是和arm11对照来说的,上代码吧,声明,我使用的是3.5的库!芯片的具体型号是stm32f103zet6!这里我不适用keil自带的启动代码,为什么,百度能搜到原因! 首先明白一点自己所用的板子的简单介绍
[单片机]
STM32F103标准库开发---Uart串口通信实验---安装串口驱动和串口调试
串口调试器 USB转TTL实物图: 接口介绍: 串口驱动安装 双击串口驱动CH341SER.EXE安装软件 点击安装 安装成功 将串口调试器插入电脑,然后选择设备管理器,成功后的端口驱动如下: 串口调试助手 串口调试助手:sscom5.13.1 界面如下: 串口通信调试 1. 打开串口调试助手 双击sscom5.13.1.exe文件 2. 选择端口 设备管理器中是COM5 串口调试助手中选择COM5 3. 设置参数 数据具体如下: 4. 打开串口 点击打开串口 5. 调试现象 我单片机中程序的功能是:每100ms发送一次 工欲善其事,必先利其器。 具体现象如下:
[单片机]
STM32F103ZET6 时钟(2)—— 代码篇
基于特定的开发板上的时钟策略: 倍频/分频系数需要在使能 PLL 之前进行配置,所以需要在 Open PLL 之前将所有系统的时钟分频器系数以及PLL的倍频系数配置好。整个时钟的配置流程如下所示: (1) 开启HSE,等待HSE稳定 (2) 设置APB2、APB1、AHB分频系数 (3) 设置PLL的时钟来源和PLL的倍频系数 (4) 开启PLL,等待PLL稳定 (5) 设置SYSCLK源为 PLL 的输出,读取时钟切换状态,确保PLLCLK被选为系统时钟 (1) OSC_IN/OSC_OUT 上外接 8M 晶振。要使用外接晶振,上电后(默认使用 8M 的HSI),首先需要使能 HSE,位于RCC_CR寄存器
[单片机]
STM32F103 FSMC同步模式学习笔记2
苦逼了。。看了将近一个礼拜的STM32F103 FSMC 片选NOR的异步模式。。。。可能对项目提升不大。。。现在看同步突发模式。。我也不知道怎么翻译。。。嵌入式学得不太久。。不说了 一会看手册啊。。 ----------------------------------我是无耻的分割线----------------------------------------------- 首先对于NOR异步模式总结一下: 1.硬件线路一定要对 2.需要知道可以用一根地址线(Ax)或者一些地址线选择RS或者其他的东西,很有用。 3.我用的是不复用模式144脚,如果是复用模式可能地址线会更乱一些。 4.一定要先初始化RCC,GPIO在初始化FSM
[单片机]