步骤1:安装带有STM32L476软件包的STM32CUBEMX和Keil。
步骤2:为项目创建电子接口
该项目所需的电子组件为:-
1)16x2字母数字LCD 2)STM32L476核板。 3)面包板4)跳线。 5)一台装有Windows的笔记本电脑(6)旋转编码器。 LCD和STM32L476板的连接如下所述:-
STM32L476-LCD
GND-PIN1
5V-PIN2
NA- 2.2K电阻连接到GND
PB10-RS
PB11-RW
PB2-EN
PB12-D4
PB13-D5
PB14-D6
PB15-D7
5V-PIN15
GND-PIN16
旋转编码器和STM32的连接如下
旋转编码器-STM板
电源引脚为3.3 V
GND-GND
CLK-PC1
DT-PC0
步骤3:在STM32CUBEMX中选择微控制器
打开cubemx并选择带有微控制器为STM32L476
步骤4:根据本教程中显示的图像在STM32cubemx中进行必要选择
使用上述步骤在STM32Cubemx中进行必要的选择,并为您正在使用的微控制器选择最大时钟(本教程中我正在使用STM32L476)
步骤5:生成UVision Keil的代码。
步骤6:为LC编写代码Main.c文件中的D。仅对STM32L4和STM32L0微控制器使用此步骤。对于其他微控制器,请使用您自己的代码。
从项目中打开main.c文件,在Keil的菜单中,并在main的while循环之前编写用于LCD初始化的代码。请参阅附图。
步骤7:在Main.c文件中的While循环中编写代码。请参阅附件中的文件
步骤8:在STM32L4xx_it.c中编写代码。在Keil中
在STM32L4xx_it中编写代码。
步骤9:在两个文件中添加变量。
在两个文件中添加变量。请参见附件。
步骤10:从Uvision Keil的项目菜单转到子菜单应用程序/用户。
从uvision Keil的“项目”菜单中转到“应用程序/用户”子菜单。附加lcd_hd44780_stml4xx.c文件(右键单击该子菜单,然后浏览选项,将三个LCD文件复制到keil的源文件夹后附加该文件。)
步骤11:编译代码。
编译代码并在出现任何错误时进行调试。
关键字:STM32 旋转编码器
引用地址:
带有STM32 Nucleo板的旋转编码器
推荐阅读最新更新时间:2024-11-16 21:20
STM32 HAL库学习系列第11篇---定时器TIM---看门狗基本配置及使用
基本配置 使用cube配置溢出时间 记住准时喂狗 独立看门狗: /* IWDG 1s 超时溢出 */ MX_IWDG_Init(IWDG_PRESCALER_64,625); /* 启动独立看门狗 */ HAL_IWDG_Start(&hiwdg); LED1_ON; /* while部分是我们在项目中具体需要写的代码,这部分的程序可以用独立看门狗来监控 * 如果我们知道这部 分代码的执行时间,比如是50ms,那么我们可以设置独立看门狗的 * 溢出时间是60ms,比50ms多一点, 如果要被监控的程序没有跑飞正常执行的话,那么 * 执行完毕之后就会执行喂狗的程序,如果程序跑飞
[单片机]
STM32中按键中断分析(附源码)
在按键学习中,我们有用到查询的方法来判断按键事件是否发生,这种查询按键事件适用于程序工作量较少的情况下,一旦程序中工作量较大较多,则势必影响程序运行的效率,为了简化程序中控制的功能模块的执行时间,引入中断控制就很有必要,,一旦有中断时间发生,则程序立马跳转到中断向量的执行程序中,执行完成后就恢复到正常的程序状态。 在STM32F中采用中断控制器NVIC来设定中断。按照中断初始化配置的结构体文件,我们需要在NVIC初始化结构体配置如下: void EXti_PB12_Config(void) { //定义结构体 GPIO_InitTypeDef GPIO_InitStructure; EXTI_I
[单片机]
STM32单片机中FLASH空间的分配之bootloader
根据程序运行流程: 正常的程序启动流程:从FLASH启动时,首先从闪存的物理地址入口0x08000000进入,然后是复位中断跳转到复位中断服务程序;复位中断服务程序执行完成后,再跳转到main函数入口,main函数一般为死循环;当外部中断发生时,跳转到中断向量查找表,通过查找表找到对应的中断服务程序地址,跳转到对应的中断服务程序;中断服务程序结束后再次跳转到main函数,这样不断的循环,这是我们的应用程序段; 当需要进行系统升级的时候,则需要在这个过程中添加一个bootloader程序段; 那么bootloader程序段存在什么位置呢? 一般是低地址区域存放bootloader程序段,紧接着的高地址区域存放应用程序段; 那么b
[单片机]
使用STM32定时器输出任意相位差的方波
方法十分简单,不用说明,看图即知(这里画了2路输出,同样道理可以产生3路甚至4路输出)
[单片机]
STM32_TEST.axf: Error: L6218E: Undefi
此问题错误提示已经十分清楚的告诉你错在哪里了,Undefined symbol SystemInit ,翻译过来就是:SystemInit 这个符号没有定义,随后的小括号告诉你了,是在startup_stm32f10x_md.o这个文件里面被提及的,这个.o文件在工程里面并没有,它是一个在编译的时候根据.c/.s文件生成的。所以我们只需要找到工程里面的.s或者.c即可,这里对应这个名字的就是startup_stm32f10x_md.s了。 在此文件里面可以找到SystemInit的所在: Reset_Handler PROC EXPORT Reset_Handler
[单片机]
stm32与伺服驱动器进行can通信
实验室师兄之前用stm32之间进行can通信,其中一个作为主机,另外作为从机,从机负责电机运转,并取出电机的速度,然后通过can通信发送给主机,然后主机通过串口与上位机进行通信。这一部分操作可以参照以下链接:https://www.ncnynl.com/archives/201703/1414.html 现在我们选择用伺服驱动器与一个stm32进行can通信,从而实现对电机的控制,目前我们实现的是对电机的速度输入,启动电机,(并进行速度反馈,进行OLED输出,从而进行电机的PID调节)。 首先我们选择了以下图示伺服驱动器,驱动器这块选择淘宝搜索可进行can通信的编码器应该可以找到类似产品 然后按照手册,我们将电机的编码器信
[单片机]
笔记--STM32时钟系统简单总结
STM32时钟系统 五个蓝色的正方形都是时钟源 HSI(high speed internal)高速内部时钟 RC振荡器不够稳定 图中梯形代表选择器(几选一) PLLXCLK常作为系统时钟来源 HSE (high speed external)高速外部时钟 MCO 是内部时钟输出引脚 对应PA8 绿色矩形对应预分频器 使用每个设备之前 都要进行时钟使能 原因之一就是:设备的功耗问题 不需要的外设就不需要开启时钟了 PCLK1和PCLK2下面挂载了很多外设 备注:某一个外设的时钟被使能后 该时钟振荡器还不能马上稳定 所以还有一个标志位代表其是否稳定 1.对应的是五个时钟源的使能 2.对应的是时钟源的来源配置 3.对应的是由
[单片机]
STM32外部中断步骤
tm32外部中断就是某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理的一个过程,此博客的目的就是我在学习外部中断的程序步骤: 1.首先进行分配时钟: //以按键的外部中断为例 RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);//给按键的GPIO进行分配时钟; typedef struct { uint16_t GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; //设置GPIOD的速度,有10hz、20hz、50hz GPIOMode_TypeDef GPI
[单片机]