stm32

STM32 gcc (arm-none-eabi-gcc) links printf even though it is not used

徘徊边缘 提交于 2019-12-22 06:50:00
问题 I can't seem to figure out why some printf library functions get linked into my code from libc_nano.a even though I never use any printf . It steals at least 2K of valuable flash memory space. I can see the sections _printf_i , _vfprintf_r , _vfiprintf_r , etc. in my linker map file. I tried Wl,--exclude-libs option EXCLUDE_FILE(..) in linker script None of these make the symbols disappear from the map file.. My gcc options: CFLAGS = -Og -Wall -g3 -Wdouble-promotion -mcpu=cortex-m0 -mthumb

DS18B20 for STM32 源代码 【worldsing笔记】

不羁岁月 提交于 2019-12-21 09:08:12
DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃。主机控制DS18B20完成温度转换必须经过三个步骤:初始化、ROM操作指令、存储器操作指令。必须先启动DS18B20开始转换,再读出温度转换值。本程序仅挂接一个芯片,使用默认的12位转换精度,外接供电电源,读取的温度值高位字节送WDMSB单元,低位字节送WDLSB单元,再按照温度值字节的表示格式及其符号位,经过简单的变换即可得到实际温度值.本例VCC用3.3V 供电,将DQ连接结到stm32的PA1口, DS18B20 STM32 源代码下载 DB18B20ForStm32.c #include "ds18b20.h" #define EnableINT() #define DisableINT() #define DS_PORT GPIOA //DS18B20连接口 #define DS_DQIO GPIO_Pin_1 //GPIOA1 #define DS_RCC_PORT RCC_APB2Periph_GPIOA #define DS_PRECISION 0x7f //精度配置寄存器 1f=9位; 3f=10位; 5f=11位; 7f=12位; #define DS_AlarmTH

Programing STM32 like STM8(register level GPIO )

爱⌒轻易说出口 提交于 2019-12-21 06:26:01
问题 I programmed STM8 GPIO like PD_ODR_ODR4 = 1; but stm32f10x.h doesn't have this function.Is there any .h file that has definition for bits. Sorry but I don't know how to explain this problem better. I tried multiple GPIO libraries. strong text 回答1: You mention stm32f10x.h in the question, so I'm assuming it's about the STM32F1 series of controllers. Other series have some differences, but the general procedure is the same. GPIO pins are arranged in banks of 16 called ports, each having it's

Programing STM32 like STM8(register level GPIO )

隐身守侯 提交于 2019-12-21 06:25:20
问题 I programmed STM8 GPIO like PD_ODR_ODR4 = 1; but stm32f10x.h doesn't have this function.Is there any .h file that has definition for bits. Sorry but I don't know how to explain this problem better. I tried multiple GPIO libraries. strong text 回答1: You mention stm32f10x.h in the question, so I'm assuming it's about the STM32F1 series of controllers. Other series have some differences, but the general procedure is the same. GPIO pins are arranged in banks of 16 called ports, each having it's

Flash memory as mass storage device using STM32 USB Device Library

旧街凉风 提交于 2019-12-21 04:41:04
问题 There is this flash memory IC on my board, which is connected to my STM32F04 ARM processor. USB port of the processor is available for the user. I want my flash memory to be detected as storage device when connected to PC via USB. As the first step I defined my USB class as MSC in my program which works fine. Since when I connect my board to PC, it detects a mass storage device connected, giving an error that "You should format the disc before using it". Now the question is that, how I can

STM32之系统滴答定时器

拥有回忆 提交于 2019-12-21 04:09:19
一、SysTick(系统滴答定时器)概述   操作系统需要一个滴答定时器周期性产生中断,以产生系统运行的节拍。在中断服务程序里,基于优先级调度的操作系统会根据进程优先级切换任务,基于时间片轮转系统会根据时间片切换任务。总之,滴答定时器是一个操作系统的“心跳”。   Cortex-M3在内核部分封装了一个滴答定时器--SysTick,在之前的ARM内核通常是不会把定时器做进内核,定时器都是SOC厂商自己制作的外设。显然,Cortex-M3封装了这么一个定时器,对于将操作系统移植到不同SOC厂商生产的Cortex-M3系类MCU上,带来了极大的方便。Cortex-M3内核统一了这样的一个系统滴答定时器,移植操作系统的时候可以使用内核的定时器,而忽略掉不同厂商生产定时器带来的分歧。 二、SysTick control and status register(STK_CTRL)   SysTick的控制是极其简单的,它的控制和状态都汇聚在同一个寄存器STK_CTRL上。   STK_CTRL的每一位的含义英文解释都是很清晰的,不必多说。需要额外讨论的是COUNTFLAG标志位,这个标志位代表的含义是:当计数为0时,也即STK_VAL计数至0时,此标志位置1。   经过笔者一番摸索,对此位有更多的看法。 COUNTFLAG:    1、此位与SysTick的中断无关,不是中断标志位

RTTBSP再战(1)

徘徊边缘 提交于 2019-12-21 01:16:31
https://gitee.com/koson/TOUCH-RTT.git 本文快速完成TOUCH的BSP 只是做了LED的那个官方的 并且没有打包出去! 后面准备做MQTT啥的 最后一起打包 本文就是快速上手BSP 基于我之前的博客 很快搞定! 再次记录下 1--下载解压-开始干活 D:\BaiduNetdiskDownload\rt-thread-v3.1.3 2--准备我的工作路径STM32L471 D:\BaiduNetdiskDownload\rt-thread-v3.1.3\rt-thread\bsp\stm32\libraries\templates\stm32l4xx 上面这个文件夹是BDP给我的模板 我CP到外面【名字修改 stm32l4xx -> stm32l4xx-tsl-touch】 D:\BaiduNetdiskDownload\rt-thread-v3.1.3\rt-thread\bsp\stm32\stm32l4xx-tsl-touch 3--开始对接 进攻目标 D:\BaiduNetdiskDownload\rt-thread-v3.1.3\rt-thread\bsp\stm32\stm32l4xx-tsl-touch\board 第一步: D:\BaiduNetdiskDownload\rt-thread-v3.1.3\rt-thread\bsp

STM32远程升级基本思路

安稳与你 提交于 2019-12-20 23:18:50
STM32远程升级基本思路 开发环境:IAR for ARM 8.30.1 MCU:STM32F103RCT6 存储介质:w25q32 1.实现思路 1.需要一个bootloader程序和APP程序 2.APP程序通过网络或者串口等方式将要升级的代码写到spiFlash中约定的位置,然后重启 3.bootloader判断spiFlash中是否有文件需要更新,有就将文件更新到stm32的内部Flash的App区域,然后跳 转到APP,否则直接跳转 2.知识储备 STM32闪存模块组织 stm32F103RCT6属于大容量型产品,ROM:256K,RAM:48K,页大小为2k,闪存分为三个块: 主存储器:页大小为2K,256K也就是128页 信息块:分为两个部分: 系统存储器(存放启动程序代码,ST出厂固化,不可更改,用于ISP编程) 用户选项字节(Option Bytes,可以用它设置读写保护,硬件看门狗使能啥的) 闪存存储器接口寄存器:操作stm32内部Flash要用到这些寄存器; 启动配置 ● 从主闪存存储器启动:主闪存存储器被映射到启动空间(0x0000 0000) ● 从系统存储器启动:系统存储器被映射到启动空间(0x0000 0000) ● 从内置SRAM启动:只能在0x2000 0000开始的地址区访问SRAM 3.Bootloader和App的工程设置

第一次写博客,随便说说

ぃ、小莉子 提交于 2019-12-20 03:18:36
  去年毕业,通信工程。目前主要从事一些嵌入式方面的工作,比较底层,多数是写单片机,有时会有跑系统。主要是车载的视频设备还有一些安防监控。之前都是查资料时候会用到博客园和CSDN之类的网站,突发奇想,想自己写点东西,总结一下工作或者学习中遇到的问题,以及一些学习经历心得之类。   在学校时候,算是比较虚度光阴,后来工作才看到差距!以至于现在的心态还算比较励志,也希望自己能始终坚持这份心情,不断学习总结,不断成长。   目前掌握的东西很有限,主要是单片机方面:STM32算是比较主流,还有Terawins一些芯片,Stk6038之类。多是车机用的比较多。至于STM32也没有系统学习过,关于底层寄存器也没有刻意研究过,多是用到时候查阅手册根据demo自己配置一些简单的东西。所以最近一直在学习STM32多是根据开发板给的指导手册,和相关的实验例程自己敲敲。系统的话,工作上也用过不少,但大多也是方案商给的DEMO代码,自己根据具体项目需求修改。FreeRTOS看过一点相关资料,也没有深入。   所以,还是希望自己有时间能多学习一点东西。(然后加一个 #Hello World ) #include "stdio.h" int main (void) { printf("Hellow World!"); return 0; }      希望自己可以坚持!然后主要是用周末时间~         

STM32读写ADXL345 中断功能

走远了吗. 提交于 2019-12-19 17:28:05
首先感谢网上朋友们的分享,我也贴出自己的源码,开源互助! 1、配置:可以换一个引脚,不知道为什么,总是要开始PC8和PC9相同配置,单片机才能进入中断,应该是单片机问题; //ÖжÏÅäÖà ADXL345_WriteByte(DATA_FORMAT , 0x29); delay345_ms(200); //Êä³öµÍµçƽÖжϣ¬13bit·Ö±æÂÊ ADXL345_WriteByte(BW_RATE , 0x09); delay345_ms(100); //Õý³£¹¦ÂÊ 50HzÊä³ö ´ø¿í25Hz ADXL345_WriteByte(POWER_CTL , 0x00); delay345_ms(100); //½øÈëstandby mode ADXL345_WriteByte(POWER_CTL , 0x28); delay345_ms(100); //²âÁ¿Ä£Ê½ ²»»á×Ô¶¯Ë¯Ãß //ÖÐ¶ÏµÍµçÆ½ ADXL345_WriteByte(INT_ENABLE,0x00); delay345_ms(200); //¹Ø±ÕÖÐ¶Ï ADXL345_WriteByte(0x24,0x02); delay345_ms(200); //¼¤»î˯ÃßactivityãÐÖµ,´óÓÚʱ´¥·¢Öжϣ¬2 - 2g ADXL345