
嵌入式技术
文章平均质量分 59
STM32 HAL库
新手小新
这个作者很懒,什么都没留下…
展开
-
STM32的自学历程——前章
本人目前大三,通信工程,大二下学期学校教了一门课叫做——《嵌入式微控制器》,这本书就是教我们如何使用STM32,包括GPIO、EXTI、ADC……等等,但是过于理论化了,导致我期末了还是一脸懵逼,连点亮一颗LED灯都不会。后来经历了许许多多的事情,由贵人推荐,说学会STM32对找工作很有帮助,从今年12月起,我也自此开始了我的自学STM32之旅。原创 2023-12-22 21:21:12 · 378 阅读 · 0 评论 -
STM32自学历程——TIM定时器中断计数实验
在STM32中,开启外设的时钟和配置外设的时钟源是两个独立但相关的步骤。然后,我们需要通过TIM_InternalClockConfig来配置TIM2的时钟源,这个时钟用来给预分频器信号,这两个时钟是不同的作用。总之,只要是想配置一个外设,就需要配置对应的外部时钟,因为只有配置了该时钟,微控制器才知道你要使用这个外设,而TIM、PWM属于高级应用,需要开启额外的时钟。把代码烧录进入开发板后,OLED显示屏显示的计数不是从0开始的,而是从1开始的,这是怎么回事呢?该函数用于读取该TIMx所设置的预分频数。原创 2024-01-06 22:39:05 · 585 阅读 · 1 评论 -
FPGA项目集合汇总
练习1是实现1-0转换状态机器,练习2是实现输入输出计数器的实现,练习3是与门的实现。练习4是当时钟每经历10次高电平,则翻转电平。原创 2024-01-10 23:01:49 · 412 阅读 · 1 评论 -
STM32自学历程——PWM呼吸灯的实现(上)
Pwm是什么:Pulse Width Modulation脉冲宽度调制使用思想:利用人眼的余晖效应,来控制呼吸灯或电机。在数字输入系统中等效模拟量。占空比:在一个电平周期内,高电平与整个电平周期的比值。比值越大,则代表高电平持续时间越长。CNT是计数器计数值,而CCR是我们自己定的值,REF是输出信号的参考值。原创 2024-01-16 16:29:06 · 449 阅读 · 1 评论 -
小插曲4——Verilog HDL语言基础学习
因为编译器默认1,2,3为十进制数,而大部分用到的都是二进制和十六进制,所以必须将数值加以区分:格式为‘。之前的小插曲1、2、3都是讲的FPGA项目经验,这次回归基础,讲一讲FPGA的编程语言,我用的时Verilog HDL。如果我们身边没有FPGA的实物,但我们又想看一下实验效果,这时就可以利用Modesim进行软件仿真,仿真的代码称为——testbench代码。相当于定义了一个接口,用于连线。如果为真,则返回1,如果为假,则返回0。如果为真,则返回1,如果为假,则返回0。原创 2024-01-10 16:14:37 · 780 阅读 · 0 评论 -
STM32自学历程——TIM定时器中断
将72Mhz的主频进行分频,因为72Mhz意味着1秒通过72000000个波形,即有72000000个上升沿通过,而计数器的最大计数值为65535,每一个上升沿记一次数,最大计数65535,若寄存器没有设置值,则默认计数到65535计数清零。所以为了让计数值变慢,就要对主频进行分频,预分频器的分频原则如下:0不分频1分成两个频为:36MHZ2分成三个频为:12MHZ。原创 2024-01-06 22:02:11 · 670 阅读 · 1 评论 -
STM32自学历程——用外部时钟计数(红外传感器为触发)
先做一个区分,外部时钟和内部时钟是怎么计数的?内部时钟:通过内部晶振来实现计数,每到一个上升沿就计数一次;外部时钟:通过外部触发的方式来触发定时中断,比如利用红外传感器,只要用手挡一次,就变化电平,计数器就加1。原创 2024-01-06 23:04:40 · 807 阅读 · 1 评论 -
STM32自学历程——PWM呼吸灯的实现(下)
成功实现LED灯的呼吸效果,先由暗到亮,再由亮到暗,以此循环往复。原创 2024-01-16 17:18:50 · 1235 阅读 · 1 评论 -
STM32的自学历程——实现红外中断
简单来说,就是当主程序运行时,突然发生一件事情,导致主程序的运行被打断,此时32要先停止主程序的运行,转头处理意外事件,待事件处理完毕后,再继续主函数的运行。上图是中断的概念图,我也是跟着江科大学32的,所以用的也是老师PPT里面的图。原创 2023-12-22 21:59:19 · 483 阅读 · 0 评论 -
小插曲3——Modesim仿真常见问题
因为本学期的FPGA期末考试要使用机考,且需要使用Modesim进行波形仿真,所以最近也是在练习使用Modesim。不过在使用Modesim时我也遇到了不少的问题,所以想要发布一个总结帖子,希望能帮助到大家,而且也为自己以后的复习准备好资源。原创 2024-01-09 14:30:45 · 1069 阅读 · 0 评论 -
小插曲——浅谈FPGA的学习心得
因为我现在的情况是:大三上学期临近期末,而且我这个学期有FPGA的课程,虽然学校教的东西很浅薄,感觉就像是告诉我有FPGA这个东西就没了(哈哈哈,其实是因为我没听懂)。我们学校期末安排的实训内容也是基于FPGA的,我也是捣鼓了好几天才弄出来,本着”没有复盘的学习=白学“思想,我还是要为本学期FPGA的学习写一篇心得。原创 2024-01-01 21:53:52 · 598 阅读 · 0 评论 -
插曲2——如何在Quartus II里面进行模块例化(以基于EP2C5T144C8的人体红外检测装置项目为例)
我只能说,还好我学过32,这和32里面的子函数调用很像很像,不过还是有区别的。模块例化就是就是将实现各个功能的函数逐个放在单独的文件里面,需要的时候就调用,不需要时就不调用。就相当于是32的库函数。在32里面无论是调用什么函数,都是要在主函数里面调用的,而FPGA要调用各个封装函数,就需要利用顶层文件来将各个封装函数联系起来。我觉得顶层文件就像是一个总的接线器,是开发板和功能代码的一个联系中介,比如,一个实现ad采集的封装函数需要用到开发板的ad引脚,在封装函数中,将ad引脚直接。原创 2024-01-01 23:31:59 · 3856 阅读 · 0 评论 -
STM32HAL库编程——OLED显示
因为最近也是在学STM32HAL库编程,为了便于调试程序,所以想要弄一个OLED显示屏来实现调试内容显示,但是固件库的OLED显示代码和HAL库OLED显示代码不一样,所以不能完全移植,需要做一些修改,但只需要修改一小部分即可。但是OLED显示屏的显示原理我现在都还没明白,因为这是属于IIC的内容,但我STM32固件库只学到USART就暂停了。所以我也是找了很久的网上资料,资料也是蛮多的,最后也是直接用大佬们的现成代码。原创 2024-01-28 09:59:04 · 705 阅读 · 0 评论 -
STM32HAL库编程——USART发送和接受
为了实现发送完数据后还能继续发送,一般都是在主函数里面写一个接收函数,用来实现第一个数据的接收,虚函数里面再放入数据读取函数。首先开启接收模式,开启后,就代表USARTx进入了接收模式,如果没有数据传来,那就不管,如果有数据传来,那就进入中断,执行USART中断函数。如上图,第一个参数是串口号,第二个是发送数据的地址,如果是定义的字符串,那就直接写字符串名字,如果是数字变量,比如定义一个变量i,让i每秒加1,那就取地址符&i。下面是串口中断函数,只要USART一接收到数据,就马上执行这个函数。原创 2024-01-31 21:14:43 · 1245 阅读 · 0 评论 -
STM32自学历程——AD单通道转化
ADC非常重要,学会ADC单通道转换后就可以进行一些简答的小项目了,比如:温湿度检测、煤气浓度检测等等。原创 2024-01-18 20:34:45 · 558 阅读 · 0 评论 -
STM32HAL库编程——点亮一颗LED
今天也是换一个标题吧,把“自学STM32历程”改成“STM32HAL库编程”,因为我现阶段是以HAL库学习为主。今天也是发布第一个HAL库项目——点亮一颗LED,这也是所有嵌入式学习的开始吧!因为HAL库编程和固件库编程的区别不大,只是HAL库编程能帮助我们初始化,而固件库要我们自己初始化而已,但它们的编译原理是一样的,都是间接控制寄存器,而且都可以控制同一个芯片,只是编译方式不同而已。原创 2024-01-27 09:02:26 · 750 阅读 · 0 评论 -
STM32自学历程——舵机操控
舵机一共只有3个接口,电源和GND就占了两个,用于传输的就只有一个口,所以舵机的操作还是挺简单的。通过给舵机发送方波信号来实现舵机的转动,而通过设置方波信号的占空比来实现舵机的旋转角度,占空比与舵机旋转角度的关系如下。PWM周期就是从0计数到自动重装寄存器ARR的过程,占空比的关键就是高电平的持续时间,但这里是通过计数来类比的所以高电平时间就类比为CCR的值。这里还是用定时器,利用OC(输出比较),设置好CCR,然后设置对应定时器的对应比较通道,这个看引脚图,因为这是已经定死了的。原创 2024-01-17 18:33:13 · 417 阅读 · 0 评论 -
STM32自学历程——记录跳过的知识部分
因为我现在学习STM32主要是为了备考4月份的蓝桥杯。所以我计划先把蓝桥杯搞定,再把未学习的部分补齐。第二:ADC的DMA读取数据组这里。为什么不一口气把资料全部学习完?第三:USART串口数据包这里。我还差哪些部分没有学习?第一:TIM输入捕获这里。原创 2024-01-21 22:28:07 · 132 阅读 · 0 评论 -
STM32HAL库编程——按键控制LED灯实验
按下的前10ms和松开后的10ms内会产生机械抖动,为了消除抖动,那就让编译器避开抖动阶段。就是跳过前10ms和跳过后10ms,这样就可以避免按键状态的读取错误。因为采用的是上拉输入,就是说,如果按键没有按下的话,那就一直是高电平,如果按键按下,那就是低电平。同时添加延时读取函数,如果一直处在按下状态的话,就一直进入While循环。初始化LED灯引脚PA0,高电平,推挽输出,无上拉下拉。初始化按键引脚PA1,上拉输入。1.首先定义LED电平状态切换函数。2.再定义读取按键引脚电平状态函数。原创 2024-01-27 15:12:19 · 1027 阅读 · 0 评论 -
STM32自学历程——直流电机的控制
就是让直流电机的两个引脚不同电平,这样就可以控制电机的旋转当红色引脚为高电平,黑色为低电平时,电机正转当红色引脚为低电平,黑色为高电平时,电机反转。原创 2024-01-17 21:06:16 · 362 阅读 · 0 评论 -
STM32自学历程——非DMA的多路数据转化
上一篇文章讲了AD如何单通道转换,就是简单的配置一下就可以了。这篇就来讲讲如何不利用DMA来实现多路数据采集。原创 2024-01-18 23:18:41 · 385 阅读 · 0 评论 -
让51和32共存于keil5
keil5使用技巧原创 2024-02-03 22:36:45 · 528 阅读 · 0 评论 -
STM32HAL库编程——TIM定时器计数
定时器每隔1s,就在OLED显示屏上加1.原创 2024-01-29 21:36:58 · 1931 阅读 · 0 评论 -
自学STM32历程——认识GPIO的八种模式
果然,学习过程中做笔记是十分重要的,虽然我在学习STM32过程中没有用过纸质笔记,但是我是有认真的在优快云上发布自己的电子笔记。不得不说,软件人就是要做软件笔记啊!最近也是在复习之前写的文章,但是我发现我是从中断开始写的,对GPIO部分并没有涉及,所以想要做一个弥补。原创 2024-01-25 09:11:29 · 393 阅读 · 0 评论 -
STM32自学历程——USART传输(串口接收)
对比之前的串口发送,串口接收只用在发送的基础之上添几行代码就可以了。串口接收相当于是接收发送方传回的波形,进行读取后转换成十六进制,然后对比ASCII码确定值。原创 2024-01-21 12:15:25 · 446 阅读 · 1 评论 -
STM32自学历程——USART传输(重定向printf)
重定向函数也是Printf函数的底层函数,Printf函数实现打印的原理就是通过fput函数一位一位的打印,只不过未重定向之前,fput函数是将值打印到屏幕上,重定向就是让fput函数一位一位的把数据打印到串口而已。如果直接想用Printf函数打印东西到电脑串口上,那就要对Printf进行重定向,因为Printf函数是默认打印东西到屏幕上,但是单片机没有屏幕,所以就要对Printf进行重定向。致,就是多了一位数组位。Printf函数是将数据打印到屏幕上,而Sprintf函数是将函数打印到定义的数组里面。原创 2024-01-21 12:05:22 · 1344 阅读 · 1 评论 -
STM32自学历程——USART传输(基础知识)
其实这不仅是USART协议的原理,更是通信原理的本质,通信双方为了实现聊天,但计算机又只能实现01传递,所以通信双方肯定有所约定,肯定都有一张表,表上写0000为0,那么想要传输0,那直接传输0000对方就知道我要传输0了。USART传输一个字节是通过帧的方式来传输的,因为一个字节有8位,所以数据位就有8位,再加上起始位和停止位共有10位。通信双方约定的发送方式,比如在考试过程中,想给别人传答案,咳嗽一声表示准备开始,竖一根手指头表示选A,竖两根手指头表示选B,竖三根手指头表示选C,最后挥挥手表示结束。原创 2024-01-21 09:35:49 · 1009 阅读 · 1 评论 -
STM32自学历程——USART传输(解决传汉字乱码问题)
GBK2312:如果直接使用GBK2312的话就简单了,什么都不用加,而且串口也能够正常打印。打开魔术棒——C/C++——在下图所示地方输入:--no-multibyte-chars。有些时候利用串口发送汉字时,电脑端会出现乱码,这是因为汉字库没选好。原创 2024-01-21 12:07:25 · 1673 阅读 · 1 评论 -
STM32自学历程——USART传输(串口发送实验)
成功在电脑串口助手上显示中文“你好,世界”原创 2024-01-21 11:48:20 · 1692 阅读 · 1 评论 -
自学STM32历程——进军HAL库编程!
最近也是跟着B站江科大老师学完了STM32库函数编程,当然,还没有学完,因为我目前学习32的主要目的是为了备考蓝桥杯,所以我只学到USART串口发送就没继续学了。至于为什么还要学Hal库编程,哈哈哈,就是因为蓝桥杯的嵌入式考试是用Hal库编程的。链接:https://pan.baidu.com/s/1ou0-ycucZXx9tky3jAA3vQ?但但是,我学Hal库也只是为了对付蓝桥杯,蓝桥杯考完后,我就又要开始学习库函数了,因为库函数更偏向于工作。所以这篇文章将是我HAL库学习的第一篇总结!原创 2024-01-25 09:41:22 · 507 阅读 · 0 评论