目的:
用汇编语言编写一个点亮LED的程序,用于验证前面章节中,下载.bin文件到芯片后,程序能否运行。
要求:
1.芯片手册
2.开发板上有LED模块
实验步骤:
1.新建文件夹led_proj,复制bootloader_proj(参照本系列第3篇文章)文件夹中的所有文件到led_proj文件夹。
2.新建文件led.s,编写代码。代码内容主要是使能GPIO口的时钟,配置GPIO口,向GPIO口的输出数据寄存器写数据。
3.修改main.s文件,添加一条跳转指令,修改死循环代码。
4.修改makefile文件,在OBJ变量中添加led.o,如图:
5..保存所有修改,在命令行中,进入led_proj文件夹,输入make,编译通过,如图:
6.将boot.bin文件下载到芯片中,具体操作参照第2篇文章。
7.如无意外,可以看到8盏LED灯亮起来了。
小结
通过查找芯片手册,了解到相关的寄存器的地址;通过设置相关寄存器,配置GPIO端口,使LED亮起来。
关键字:STM32 操作系统系列 点亮LED灯
引用地址:
基于STM32从零写操作系统系列---点亮LED灯
推荐阅读最新更新时间:2024-11-09 23:09
STM32中DMA实现方式
STM32系列微控制器均含有DMA和通用时钟TIMx模块。其低端型号中仅包含DMA1,支持7个通道;高端型号还包括DMA2,支持5个通道。它的每个通道可任意指定工作模式,如内存到内存、内存到外设或外设到内存等。当涉及到外设时,一般是由外设来触发DMA的一次传输,如串口收到数据的标志位可触发DMA。 DMA的每次传输都分为4个阶段:申请仲裁、地址计算、总线存取和应答。除总线存取阶段,其他3个阶段都只需要一个系统周期,并且不占用总线,可在DMA控制器内部并发地执行。总线存取阶段,每个字(4字节)的传输需要3个系统周期。DMA和CPU工作在交替方式下,不会相互阻塞。DMA各个通道可独立设置优先级,当访问同一资源时高优先级通道先获得
[单片机]
STM32低功耗模式之待机模式
上周完成了一个小项目,项目涉及到stm32的低功耗的待机模式,特在此记录下32的待机模式。 芯片:STM32f030F4 库:HAL库 唤醒方式:用RTC和PA0的上升沿唤醒 先来看下低功耗模式下的情况(只看停止跟待机): 停止模式 停止模式在保留SRAM和寄存器内容的同时实现了非常低的功耗。 1.8V域中的所有时钟停止,PLL、HSI RC和禁用HSE晶体振荡器。电压调节器也可以安装在正常或低功率模式。 该设备可以被任何一条exti线路从停止模式唤醒。 exti行源可以是16个外部行和rtc之一。 待机模式 待机模式用于实现最低功耗。内部关闭电压调节器,使整个1.8V域断电。 这个
[单片机]
STM32中通过固件库自己编写系统时钟配置文件
使用HSE配置系统时钟 因为STM工程使用固件库,进入main函数时都已配置好时钟,所以我们自己编写时钟配置文件首先需要复位RCC寄存器! 使能HSE 判断HSE是否启动成功 使能预取指 设置FLASH等待周期 配置3条总线的倍频因子 配置锁相环,使能锁相环 等待锁相环稳定 选择锁相环输出为系统时钟,并等待其稳定 void HSE_sysclock_config( uint32_t RCC_PLLMul_x ) { //先复位RCC寄存器 RCC_DeInit(); /*使用HSE配置系统时钟*/ //使能HSE RCC_HSEConfig( RCC_HSE_ON ); //检测HSE是否启动成
[单片机]
stm32之 GPIO_Remap_SWJ_Disable之后无法使用swd下载 程序解决方法
说明:库文件版本:3.5.0 软件环境:iar for arm 在系统复位的时候默认是开启JTAG与swd的,在点击下载后的2秒内按下复位键即可将程序下载进stm32 注意:在程序里边加入GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE); 来彻底解除限制,或用写寄存器的方式,SWG_CFG 写入000
[单片机]
STM32入门之旅(第四天)-------位带操作、中断
一、位带操作 1.意义 回想以前写51代码 P0 = 0x10; //将P0端口设置为0x10 P1_0=1; //将P1端口1号引脚设置为高电平 a = P2_2; //获取P2端口2号引脚的电平 根据上述的方法,我们可以发现快速定位修改某个引脚的电平还有获取引脚的状态 GPIO_SetBits、GPIO_ResetBits操作IO口的性能没有达到极致,因为这些函数都需要进行现场保护和现场恢复的动作,比较耗时间,没有进行一步到位,使用位带操作则没有上述的烦恼,简单快速! //位带操作,实现51类似的GPIO控制功能 //IO口操作宏定义 #define BITBAND(addr, bitnum) ((addr
[单片机]
STM32 I2C写入驱动数码管显示实验
实验环境 Matlab版本: 2021b 操作系统 :Win10专业版 硬件平台 :YF-STM32-ALPHA 1R4 实验内容 :I2C驱动数码管芯片显示‘0’~‘A’字符 模型与原理图 本次实验所用到的simulink模型如图5.2所示,电路原理图如图5.3所示,实验效果为数码管从‘0’~‘A’轮流显示,如图5.1所示。 图5.1 数码管驱动显示实验效果 图5.2 数码管显示I2C驱动模型 图5.3 CH422G共阴数码管电路连接 基础模型介绍与分析 1、数码管简介 数码管简单来说就是将多个LED有规律的排列在一起,实验中用到的数码管外观如图5.4所示,其型号为:FJ3461AH,三维尺寸:30.00mmx1
[单片机]
STM32模拟SPI通信
(1)更改GPIO配置 由于没有使用到硬件的SPI,那么将硬件初始化SPI部分进行删除,取消GPIO的复用功能,然后更改MOSI和SCLK引脚为输出模式,MISO更改为输入模式。 (2)改写uint8_t SPI1_SendByte(uint8_t byte)函数 void w25qxx_init(void) { /*! Enable GPIO clocks,使能GPIOB硬件时钟 */ RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOB, ENABLE); //端口配置 PB3 PB5 GPIO_InitStructure.GPIO_Pin = GPI
[单片机]
基于STM32单片机的红外测温仪的设计与实现
红外测温仪是一种将红外技术与微电子技术相结合的新型温度测量仪器。与传统接触式测温仪器相比,具有测温精度高、非接触、不影响被测对象温度场、响应速度快及稳定性好等一系列优点,在电力、石油、化工、医疗等领域得到广泛应用 。 热释电红外测温仪是利用热释电效应工作的一种新型红外测温仪。与其他传统测温仪相比,具有不需制冷、能在室温下工作和光谱响应宽等优点,且其灵敏度高、响应速度快、抗干扰能力强 。本文利用热释电探测器,结合32 bit ARM核处理器低功耗、高性能和低成本的优点,设计了一个以ARM微控制器STM32为核心的红外测温仪。 1 红外测温的原理 一切温度高于绝对零度的物体都在不停地向周围空间发出红外辐射能量,其辐射能量的大小及
[单片机]