推荐阅读最新更新时间:2024-11-18 13:45
STM32的ADC单次转换设计
下面分别为库函数和直接操作寄存器的两个范便,我都已测试通过 使用此程序前必要对GPIO设好为模拟输入方式 =====================================库函数版========================================= void AD_CONFIG_SINGLE(void ) { //先配置IO口: ADC_InitTypeDef adcInitStruct; ////PB1 作为模拟通道输入引脚 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 , ENABLE);//使能ADC和GPIOC时钟 //配置ADC: //将ADC配置成非
[单片机]
基于STM32从零写操作系统系列---将printf指向串口输出
为什么需要printf? 首先,这个printf不是标准C中的printf,这个printf是自己参考标准库实现的。只是简单地完成了打印输出int,long long int, unsigned int, unsigned long long int, float, double和十六进制数等功能。主要用于在以后的学习中,输出变量、寄存器等的数据,便于调试程序。 1.函数调用中的参数传递 根据《Procedure Call Standard for the ARM ® Architecture》(文章结尾有下载分享)这个文档可知,标准规定在寄存器(r0-r3)和堆栈中传递参数。对于采用少量参数的子程序,仅使用寄存器,大大减少了
[单片机]
STM32基于固件库学习笔记(11)RTC实时时钟
实时时钟(RTC) 小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。 中容量产品是指闪存存储器容量在64K至128K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。 大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx微控制器。 互联型产品是指STM32F105xx和STM32F107xx微控制器。 主要特性 ● 可编程的预分频系数:分频系数最高为20 。 ● 32位的可编程计数器,可用于较长时间段的测量。 ● 2个分离的时钟:用于APB1接口的PC
[单片机]
STM32——通用设备单元
不说废话,直接来说: 首先,STM32的通用设备单元包括了以下个部分,分别是通用输入/输出口(GPIO或者I/O)、外部中断单元、ADC转换模块、通用/高级定时器、实时时钟RTC、备份寄存器、入侵检测引脚。 通用输入/输出口 GPIO(总共有80个),分布在5个端口中,其中每个端口有16个GPIO,分别以A~E来命名这16个GPIO口。最大耐压值为5V。大部分的外部引脚都可以从通用的GPIO切换为用户设备的专用I/O口。STM32还有一个外部中断控制单元,允许将每个端口上的16个GPIO通过映射成为外部中断输入口。 外部中断单元 外部中断单元(共19个外部中断(EXTI)通道),通过内嵌向量中断控制器(NVIC)与中断
[单片机]
STM32—HAL库中GPIO相关函数解析
背景: 最近一直在学习HAL库,总结下STM32中HAL库的GPIO相关函数知识点。 内容: 在stm32l152xb.h头文件中定义了GPIO的相关寄存器,下面讲述的GPIO函数将会调用到这些寄存器。寄存器的结构体定义如下图: 下面解析stm32l1xx_hal_gpio.c文件中一些常用的GPIO函数: (1)GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)函数 GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) { GPIO_Pi
[单片机]
STM32学习笔记----keil工程的建立
1、keil编译的三个按键的功能 A、第一个按钮:Translate 就是翻译当下修改过的文件,说明白点就是检查下有没有语法错误,并不会去链接库文件,也不会生成可执行文件。 B、第二个按钮:Build 就是编译当下修改过的文件,它包含了语法检查,链 接动态库文件,生成可执行文件。 C、第三个按钮:Rebuild 重新编译整个工程,跟 Build 这个按钮实现的功能 是一样的,但有所不同的是它编译的是整个工程的所有文件,耗时巨大。 综上:当我们编辑好我们的程序之后,只需要用第二个 Build 按钮就可以, 即方便又省时。第一个跟第三个按钮用的比较少 2 、core_cm3.c 跟启动文件一样都是底层文件,都是由 ARM 公司提供的,
[单片机]
STM32 通用定时器作为输入捕获 学习笔记
STM32 通用定时器作为输入捕获 通用定时器作为输入捕获的使用。我们将用TIM5的通道1(PA0)来做输入捕获,捕获PA0上高电平的脉宽(用 WK_UP 按键输入高电平),通过串口打印高电平脉宽时间。 输入捕获简介: 输入捕获模式可以用来测量脉冲宽度或者测量频率。STM32的定时器,除了TIM6和TIM7,其他定时器都有输入捕获功能。 STM32 的输入捕获,简单的说就是通过检测 TIMx_CHx 上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候, 将当前定时器的值(TIMx_CNT)存放到对应的通道的捕获/比较寄存器(TIMx_CCRx)里面,完成一次捕获。同时还可以配置捕获时是否触发中断/DMA
[单片机]
STM32串口使用总结
一、串口使用: 原则:尽量中断中不要有延时(比如自定义delay 和自定义printf串口打印,明显找事啊这么慢能不发生溢出error嘛),接收和发送尽量分开处理 1.串口发送数据丢失: 1)通常是因为发送之前未检测TC状态位之前是否处于发送完成标志导致,关于STM32之·的测试程序来讲会导致第一个字符丢失,之后都完全正常。 因此发送一串数据的逻辑必须按照先检测TC再发送字符的顺序进行.即: void Usart1_Send_Data(u8 *buf,u32 len) { u32 i; for(i = 0;i { while(USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET) ;
[单片机]