推荐阅读最新更新时间:2024-11-05 15:15
STM32F103RB 实作笔记(七)- 外来中断试验
关于中断和 计时寄存器的有关理论, 有兴趣的朋友可以看我一年前写的笔记 :“STM32F072RB 实作笔记(五)- 计时器加上中断EXTI_IRQHandler(一)” 和 “(二)” 两篇笔记。 这一篇笔记就直接解析实验的程式内容 main.c 和前几篇一样,进入“实验5 外部中断实验” 的 USER 资料夹点开 MDK 的项目档案。执行编译。 以下是 main.c 的内容: #include key.h #include beep.h #include usart.h #include exti.h /************************************************/ in
[单片机]
STM32F103使用内部rc振荡器做时钟源
写在前面:标题“使用内部rc振荡器做时钟源”其实不太准确,实际应该是“使用内部rc振荡器经PLL倍频后做时钟源”,为了简单本文统一用“使用内部rc振荡器做时钟源”。 在做开发时,一些场合对时钟要求不是非常精确的时候可以省掉外部晶体和两个电容,好处是可以简化布线,节省成本并进一步降低功耗;缺点也很明显,HSI不够精准,官方给出的误差是在1%(25摄氏度)。根据手册,USB时钟不能用HSI经PLL后得到,但是实际应用时这样做是可以的(只是能用,但是非常不推荐)。 在用正点原子例程时,一直找不到相关例程,网上的一些教程也只是谈到了原理,代码部分都需要改动库函数,不方便移植。后来发现野火的例程里有,而且可以直接调用,就直接用了,详
[单片机]
利用stm32f103的TIM2实现精确延时
void TIM_ResetCounter(TIM_TypeDef * TIMx) { TIMx- CNT = 0; } void TIM2_Delay_ms(unsigned int cms) { unsigned short temp = 0; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseStructInit(&TIM_TimeBaseStructure); TIM_TimeBaseStructure.TIM_Prescaler = 36000 - 1; TIM_TimeBaseStructure.TIM_CounterMo
[单片机]
STM32F103 systick 是做什么用呢
提到systick 不得不抱怨以下STM32 的用户手册,既然提供了systick 的功 能,为啥手册里却只提了一下?后来笔者上网搜的时候,才发现,抱怨的不仅仅 是我一个人。整个DATASHEET上面就只有一句话提到了关于systick的具体用法,糊里糊涂的我蒙了半天,问老大,结果被人家鄙视了,我很是不爽就在网上看了看,结果还是没有资料,后来终于看了信达工作室里整合了一篇关于systick的文章,觉得不错就和大家分享下,希望对大家有帮助,由于时间紧张文章中可能会有写的不具体和逻辑不清楚的地方,请大家多包涵。 1. systick介绍 Systick 就是一个定时器而已,只是它放在了NVIC 中,主要的目的是为了 给操作系统提供一个硬
[单片机]
stm32f103 timer1产生400HzPWM
/*timer1时钟为72MHz,产生400Hz,占空比为60%的PWM*/ void Bsp_Motor_PWM_Init(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; TIM_OCInitTypeDef TIM_OCInitStruct; GPIO_InitTypeDef GPIO_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 | RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8
[单片机]
stm32f103——按键检测(轮询方式)
我们下面来讲一讲,GPIO在输入模式下检测按键是否被按下: 首先我们来看看按键按下时,K1处电压的变化情况是什么: 我们看到,按键按下时,K1处的电压并不是立马就下降为0v,因为按键有机械的弹性形变,导致按键被按下时,会发生抖动。我们用GPIO来读取K1处的电压是否为0,如果为低电平,则表示按键被按下。被按下后,如果为高电平,则表示按键被抬起来了。 但是,在这个按键抖动的过程中,电平有上升沿也有下降沿,电压有高电平也有低电平。所以,在这一段抖动的部分的时间段内,如果我们用GPIO去判断,由于电平忽高忽低,我们的程序就会识别出来,按键在被按下后马上就抬起来了。但是,实际上并不是这样。所以,我们需要跳过按键被按下时的前50
[单片机]
两种方法实现STM32F103向串口一直发送数据
串口是STM32最为重要的资源,在平时的硬件调试和软件调试中都是不可或缺的工具,最近在测试一块板子的通信功能是否正常,我打算用板子A的串口USART1一直向串口发送数据,用板子B的串口1接收数据,并将接收到的数据经过处理后显示在LCD液晶上。所以就写了下面的串口发送程序,发送的是数组函数。 Main.c #include led.h #include delay.h #include key.h #include sys.h #include usart.h u8 USART_fasong_Buf ={12,35,00,12,12,34,90,00}; // 接收缓冲区字节长度200 //u16 res=9; v
[单片机]
基于单片机的硬件电路设计原理和工程应用方案
0 引言 随着航空设备自动化程度的不断提高,多芯电缆越来越多地得到了应用,电缆的性能也很大程度地影响着设备的正常工作。由于多芯电缆芯数增多,其互联关系也变得更复杂,这就要求电缆测试设备具备更多的测试点数。传统的手动测试方法费时费力,准确性差,已经不能满足工程化,批量生产的需要。本文提出了一种针对航空多芯电缆故障检测的新方案,并阐述了系统构成和测试原理。 1 测试系统构成 电缆测试系统主要由工控机系统,单片机系统和继电器阵列三部分构成。其中工控机负责人机交互和数据处理,单片机系统控制硬件电路完成相应动作,继电器阵列负责响应译码电路的请求将外部电缆接入测试系统。单片机和工控机通过USB进行通信。如图1所示。 其中:硬件电路
[单片机]