stm32 裸机点亮led

stm32不用库 裸机点亮led
startup.s 定义栈入口函数 进入main

.syntax unified
.cpu cortex-m3
.fpu softvfp
.thumb.global vtable
.global reset_handler.type vtable, %object
vtable:.word _estack.word reset_handler
.size vtable, .-vtable.section .data
.word _sidata
.word _sdata
.word _edata
.word _sbss
.word _ebss.type reset_handler, %function
reset_handler:ldr r0,=_sdataldr r1,=_edataldr r2,=_sidatabl flash2ramldr r0,=_sbssldr r1,=_ebssbl zerobssbl mainloop:b   loop  //死循环
.size reset_handler, .-reset_handler

main.c

void flash2ram(register unsigned int *dst, register unsigned int* dst_end, register unsigned int* src)
{while(dst < dst_end)*dst++ = *src++;
}void zerobss(register unsigned int* start, register unsigned int* end)
{while(start < end)*start++ = 0;
}void delay(unsigned int n)
{while(n--);
}int main()
{//RCC_APB2ENR  IOPCEN*((unsigned int*)(0x40021000+0x18)) |= 0x10;   //gpioc clk//gpioc CRL General purpose output push-pull  Output mode, max speed 50 MHz.*((unsigned int *)(0x40011000 +0x00)) &= 0xFFFFF0FF; *((unsigned int*)(0x40011000 +0x00))|= 0x00000300;while(1) {//GPIOC_BSRR  set *((unsigned int *)(0x40011000+0x10)) |= 1<<2;delay(1e6);//GPIOC_BRR  clear *((unsigned int *)(0x40011000+0x14)) |= 1<<2;delay(1e6);}
}

sim.ld

_estack = 0x20005000;MEMORY
{FLASH ( rx )      : ORIGIN = 0x08000000, LENGTH = 256KRAM ( rxw )       : ORIGIN = 0x20000000, LENGTH = 48K
}SECTIONS
{.text :{. = ALIGN(4);*(.text)*(.text*)*(.rodata). = ALIGN(4);} >FLASH_sidata = . ;.data : AT ( _sidata ){. = ALIGN(4);_sdata = .;*(.data)*(.data*). = ALIGN(4);_edata = .;} >RAM.bss :{. = ALIGN(4);_sbss = .;*(.bss)*(.bss*)*(COMMON). = ALIGN(4);_ebss = .;} >RAM
}

编译

arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb  --specs=nosys.specs -nostdlib -T sim.ld main.c startup.s -o led.elf

转binary

arm-none-eabi-objcopy -O binary led.elf led.bin

烧录

st-flash write led.bin 0x8000000

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/648164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker 网络及如何资源(CPU/内存/磁盘)控制

安装Docker时&#xff0c;它会自动创建三个网络&#xff0c;bridge&#xff08;创建容器默认连接到此网络&#xff09;、 none 、host docker网络模式 Host 容器与宿主机共享网络namespace&#xff0c;即容器和宿主机使用同一个IP、端口范围&#xff08;容器与宿主机或其他使…

第140期 为什么有人无脑吹分布式(20240126)

数据库管理140期 2024-01-26 第140期 为什么有人无脑吹分布式&#xff08;20240126&#xff09;1 环境2 场景3 首席补刀总结 第140期 为什么有人无脑吹分布式&#xff08;20240126&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海文&#xff09; Oracle ACE Associa…

mac安装telnet命令

1、安装brew 在mac终端执行命令&#xff1a; /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 报错&#xff1a; curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to raw.githubusercon…

C++ 设计模式之解释器模式

【声明】本题目来源于卡码网&#xff08;卡码网KamaCoder&#xff09; 【提示&#xff1a;如果不想看文字介绍&#xff0c;可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 --什么是解释器模式&#xff08;第22种设计模式&#xff09; 解释器模式&#xff08;Interpreter…

CodeGPT

GitCode - 开发者的代码家园 gitcode.com/ inscode.csdn.net/liujiaping/java_1706242128563/edit?openFileMain.java&editTypelite marketplace.visualstudio.com/items?itemNameCSDN.csdn-codegpt&spm1018.2226.3001.9836&extra%5Butm_source%5Dvip_chatgpt_c…

【算法】用JAVA代码实现LRU 【缓存】【LRU】

LRU(Least Recently Used)是一种常见的缓存淘汰策略,用于在缓存空间不足时确定哪些数据应该被淘汰。其基本原则是淘汰最近最少被访问的数据。 工作原理: 最近使用优先: LRU算法基于这样的思想:最近被使用的数据很可能在短时间内还会被使用,因此保留这些数据有助于提高缓…

linux bash shell的getopt以及函数用法小记

getopt 长选项 短选项 可选参数whilecaseifbasename函数变量shiftread 实现功能描述&#xff1a; 1. 实现可选参数传入 -c 或 --clearBuild。 2. 用shell脚本来实现选择&#xff0c;make时是否clean。 3. 可以打印用法帮助 和 作者信息。 #!/bin/bash# sh函数定义 *******…

vue3 实现上传图片裁剪

在线的例子以及代码&#xff0c;请点击访问链接

实力上榜!安全狗入选《CCSIP 2023中国网络安全行业业全景册(第六版)》多个细项

1月24日&#xff0c;Freebuf发布了《CCSIP 2023中国网络安全行业业全景册&#xff08;第六版&#xff09;》。 作为国内云原生安全领导厂商&#xff0c;安全狗也入选多个细分领域。 厦门服云信息科技有限公司&#xff08;品牌名&#xff1a;安全狗&#xff09;创办于2013年&…

学习gin框架知识的小注意点

Gin框架的初始化 有些项目中 初始化gin框架写的是&#xff1a; r : gin.New() r.Use(logger.GinLogger(), logger.GinRecovery(true)) 而不是r : gin.Default() 为什么呢&#xff1f; 点击进入Default源码发现其实他也是new两个中间件&#xff0c;&#xff08;Logger&…

【并发编程】锁死的问题——如何解决?以及如何避免?

目录 1.如何解决 一、死锁的定义和原因 1.1 定义 1.2 原因 二、常见的死锁场景 2.1 线程间相互等待资源 2.2 嵌套锁的循环等待 2.3 对资源的有序请求 三、死锁排查的方法 3.1 使用jstack命令 3.2 使用jconsole 3.3 使用VisualVM 四、常见的解决方案 4.1 避免嵌套锁…

深入研究C语言数组:高级技巧和性能优化的探索

在前文中&#xff0c;我们介绍了C语言数组的基本概念、多维数组的使用以及作为函数参数的传递方式。本文将进一步探索C语言数组的高级用法和性能优化技巧&#xff0c;帮助读者更深入地理解和运用数组。 动态数组 C语言中&#xff0c;数组的大小在创建时就被确定了&#xff0c…

STK姿态分析(一)矢量组件

文章目录 内容简介一、卫星矢量二、卫星坐标平面三、卫星姿态球面 – 内容简介 接下来一系列文章将进行STK目标&#xff08;卫星、导弹、火箭、飞机、船舶&#xff09;姿态分析的仿真。本篇将使用矢量&#xff08;vector&#xff09;组件对卫星姿态、传感器指向等进行3D可视化…

注册表学习——注册表结构

简介&#xff1a;注册表是由很多项和值构成的。 HEKY_USERS&#xff08;HKU&#xff09; 主要保存默认用户及当前登录用户配置信息。 .DEFAULT 该项是针对未来创建的新用户所保存的默认配置项。 S-1-5-18等项 这些项叫作安全标识符&#xff08;SID&#xff09;用来表示Windows操…

Maven 跳过test 进行 package

在使用Maven构建项目时&#xff0c;如果你想要跳过测试阶段&#xff08;test phase&#xff09;并直接打包&#xff08;package&#xff09;&#xff0c;你可以在命令行中使用特定的Maven命令选项。以下是一些常用的命令和选项&#xff1a; 1. 使用-DskipTests选项&#xff1a…

Linux(linux版本 centos 7) 下安装 oracle 19c详细教程(新手小白易上手)

一、安装前准备 1、下载预安装包 wget http://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm预安装包下载成功 2、下载oracle安装包 下载地址如下 https://www.oracle.com/cn/database/technologies…

渲染与创造之美:互为表里的艺术

在五彩斑斓的艺术世界中&#xff0c;渲染与创造是两股不可或缺的力量。它们之间的关系&#xff0c;恰如弓与箭&#xff0c;互为表里&#xff0c;共同塑造出无数令人叹为观止的视觉景象。创造之美是指通过创新思维和创造力&#xff0c;将想象具象化为现实&#xff0c;创造出新的…

spring-aop的介绍和使用

目录 1&#xff1a;为什么我会使用这个框架 2&#xff1a;那怎么快速入手属于自己的spring-aop呢&#xff08;或者说怎么在自己项目调用spring-aop这个框架呢&#xff09; 1->环境&#xff08;自己去建一个maven项目&#xff09; 2->导入spring-aop框架包&#xff08…

Python全自动性能无人机

Python全自动性能无人机研发开发的重要性可以从以下几个方面进行阐述&#xff1a; 编程语言的灵活性&#xff1a;Python是一种高级编程语言&#xff0c;具有简单易学的特点&#xff0c;能够快速地实现想法并进行快速原型设计。这种灵活性使得Python成为开发无人机控制系统的理想…

Linux命令-apachectl命令(Apache服务器前端控制工具)

apachectl命令 是Apache的Web服务器前端控制工具&#xff0c;用以启动、关闭和重新启动Web服务器进程。 语法 apachectl (参数)参数 configtest&#xff1a;检查设置文件中的语法是否正确&#xff1b;fullstatus&#xff1a;显示服务器完整的状态信息&#xff1b;graceful&a…