stm32

单片机实现寄存器点亮LED实验

风流意气都作罢 提交于 2019-12-26 13:56:39
为了顺利过渡到库开发,在STM32编程的开始,我们对照51点亮一个LED的方法,给大家演示一下STM32如何用操作寄存器的方法点亮一个LED,然后再慢慢讲解到底什么是库,让大家知道库跟寄存器的关系。 1. 用51点亮一个LED   在用STM32点亮一个LED之前,我们先来复习下用51如何点亮一个LED。 硬件上我们假设51单片机的P0口的第0位接了一个LED,负逻辑亮。如果我们要点亮这个LED,代码上我们会这么写: P0 = 0XFE;//总线操作点亮 LED 这时候我们就把LED点亮了,如果要关掉LED ,则是: P0 = 0XFF;//总线操作关闭 LED 这里面我们用的是总线操作的方法,即是对P0口的8个IO同时操作,但起作用的只是P0^0。 除了这种总线操作的方法,我们还学习过位操作,利用51编译器的关键字sbit,我们可以定义一个位变量: sbit LED = P0^0; 那么LED = 0,就点亮了LED; LED = 1,就关闭了 LED。 为了让程序看起来见名知义,我们定义两个宏: #define ON 0 #define OFF 1 点亮和关闭LED的代码就变成了: LED = ON;//位操作点亮LED LED = OFF;//位操作关闭LED 稍微整理一下代码,整体效果就是: //假设51单片机的PO~0口接LED,负逻辑点亮 #define ON 0

2019年9月9日星期一(STM32 内部时钟 中断)

☆樱花仙子☆ 提交于 2019-12-26 13:56:03
一 .stm32 的启动过程 在stm32的开发中,芯片的启动代码官方通常会提供,一般不需要修改。但是对芯片的启动代码有一定了解,有助于对某些组件工作原理加深了解 可以借助官方提供的启动代码来理解启动过程,启动代码是一个汇编文件(.s作为后缀),我们开发板的启动文件是start_stm32f40_41xxx.s 1.初始化栈 2.初始化堆 3.实现异常向量表 4.处理各个异常的代码 其中复位异常中 ----- 初始化一些基本硬件(时钟,SRAM,FLASH...),调用主函数 二 .stm32 的时钟系统 stm32f407的推荐时钟频率 168MHz 1. 提供参考时钟的硬件 晶振 ----------- 产生低频的稳定震荡信号 RC震荡电路 ----- 产生低频的不稳定震荡信号 以上产生的频率不足以直接供给CPU使用,实际上使用PLL(锁相环)通过一个低频信号产生一个高频信号,供给CPU使用 stm32f407一共4个原始时钟源 HSIRC -------- 高速内部RC震荡时钟(16M) HSEOSC -------- 高速外部晶振(4-26M) LSIRC -------- 低速内部RC震荡时钟(32K) LSEOSC ------- 低速外部晶振(32.768K) 2.stm32f407 时钟树 绝大多数的外设挂在AHB总线和APB总线上

【STM32】笔记12.24

廉价感情. 提交于 2019-12-26 12:09:56
1.LQFP144 很多开发板的资料,介绍引脚都会有这个编号 百科: 2.对寄存器的引脚输入高低电平的操作一直不太懂,0x01<<6是为什么? 解答0x01<<6,就是第六个位置为1了大概就是。。。。 以及为什么有0x01<<(16+6),因为前面文档提到了BSRR寄存器分为高16位和低16位,16+6=22,int4字节,第22位置1相当于高16位的第六位置1。 3.下载STM32芯片官方固件库的方法 https://jingyan.baidu.com/article/948f59242eb91dd80ef5f972.html https://jingyan.baidu.com/article/0bc808fc52cbbb1bd485b98b.html 来源: CSDN 作者: David 's blogs 链接: https://blog.csdn.net/zDavid_2018/article/details/103696351

stm32 diy 机械键盘

China☆狼群 提交于 2019-12-26 08:03:33
程序员对机械键盘的需求不止于情怀,当然,对于算法工程师、逻辑复杂而代码量小的软件工程师来说,平时对键盘的操作并没有那么多,可能对机械键盘并不感兴趣。而我曾经是一个日常大量编码、运维的数据工程师,逻辑简单,键盘操作却很多,特别是对十几台服务器ssh不能用鼠标,更增加了键盘的用量。为了统一工作流程,我使用vim作为Windows、Linux的唯一编辑器,让c/c++/python/shell的工作统一到了一个环境中,效率也增加不少。但是这种工作模式让小拇指难以承受,经常到晚上下班时小拇指疼,加班的时候就不能很爽的敲键盘了。 造成小拇指负荷的主要因素是薄膜键盘的手感不佳,和ctrl键的键位不合理。一般使用的台式机薄膜键盘按键按下时发涩,阻力不确定,有时顺畅,有时突然卡一下。笔记本键盘稍好,但关键问题是薄膜键盘的触发是在按键全部按下后,薄膜触点接触时按键按下,没有滞回效果,按下后需要持续发力,只要发力不均匀,即使按键位置在最底端没动,实际信号仍有可能中断,对组合键持续操作产生致命影响。由于我已经将vim的上下翻页键配置成组合键alt+j/k,日常最多的操作就是快速持续翻页,薄膜键盘的特性让这个操作时常卡顿,很不舒服。 而机械键盘就可以解决这个关键问题,其按键的触发仅取决于按键位置,并具有滞回效果,只要保持按键按下,即使手指的力度已经发生颤抖,按键信号仍然不变。对于长时间的工作,可以使用红轴

简单IO口配置_LED灯(STM32)

删除回忆录丶 提交于 2019-12-25 19:53:29
GPIO口(可编程IO) 一、GPIO口概念 GPIO是通用输入/输出端口的简称。可以实现输出(驱动外部电路)、输入(检测外来信号)以及模拟一些通信接口通信协议功能,是单片机和外界进行数据交换的必要窗口。GPIO和外界进行都是通过TTL数字电平(高电平或低电平)来进行数据交换的,高电平表示数字“1”,低电平表示数字“0”。 二、单片机内部系统框图 STM32数据手册 STM32 中文参考手册.pdf GPIO 章节位于:第8章 框图位于105页 I/O端口位的基本结构 三、编程思路: 1、 看原理图:GPIO与设备连接情况; 2、看数据手册 所处时钟总线; 3、固件库手册 (1)寄存器编程(难度系数高、了解一款芯片 举一反三) (2)库函数编程ST(难度系数小、出现问题找问题比较麻烦、容易上手) 四、编程 1、 开启时钟 展开:RCC库函数 RCC_APB2PeriphClockCmd 使能或者失能 APB2 外设时钟 函数原型: void RCC_APB2PeriphClockCmd(u32 RCC_APB2Periph,FunctionalStateNewState) 参数1 : RCC_AHB2Periph 描述 RCC_APB2Periph_AFIO 功能复用 IO 时钟 RCC_APB2Periph_GPIOA GPIOA 时钟 RCC_APB2Periph_GPIOB

Synchronizing different messages

巧了我就是萌 提交于 2019-12-25 17:48:24
问题 I think it's a general software paradigm problem, so it's not related that much to embedded software. I have 3 Messages that I get at different time slices, the three messages are Odo, velocity, gps. each one has timeslice 20ms, 1sec, and 1sec. My problem is how would I sync and get a complete message only when the three are already fetched. My current approach is to have three circural queues, and put three boolean variables and check if they are all in sync, but that doesn't work if for

Writing in STM32L4x1 flash memory in C

好久不见. 提交于 2019-12-25 05:20:42
问题 I am trying to write in STM32L476's flash memory using a JTAG ST-Link/V2 on Windows 7. No software has to be uploaded, I only need to write data in a non-volatile place where it can be read and deleted. As a newbie regarding hardware and being efficient only when programming non-embedded regular C, I am afraid I might harm or modify irrevocably the flash memory. Also, I am not really sure regarding what I can or cannot do. I have figured out reading the manual that writing in 0x08000000

Why USART transmits incorrect data as the APB1 frequency changes. (RCC <= 21MHz)

两盒软妹~` 提交于 2019-12-24 19:15:35
问题 I want to use the USART communication protocol in my project. Communication is provided but incorrect data is sent (STM> PC). I'd try: Boundrade bands are the same. Suitable combinations of PLL Source Mux (HSI-HSE) and System Clock Mux (HSI-HSE-PLLCLK) were tested. Available: HSE and PLLCLK APB1 Clock frequency was changed within the allowed range. It was observed that the data obtained at each change also changed. Sometimes STM sent very fast data. The STM card was fed from a different

IAR define memory region for custom data

血红的双手。 提交于 2019-12-24 11:28:05
问题 I want to define a specific memory region in the STM32 micro where to store some strings. I'm using IAR compiler but I don't find a simple example that can help me to create the region in the correct way using the icf file. How can I create the region and use this region in the code? Thanks 回答1: I found this solution: In the icf file I define the memory region in this way: define region LANGUAGE_region = mem:[from 0x080FB000 to 0x080FC000]; "LANGUAGE_PLACE":place at start of LANGUAGE_region {

Interact with a STM32 chip's memory in C [closed]

拈花ヽ惹草 提交于 2019-12-24 08:55:50
问题 Closed. This question is off-topic. It is not currently accepting answers. Want to improve this question? Update the question so it's on-topic for Stack Overflow. Closed 2 years ago . I would like to interact with a STM32 chip's memory , STM32L476, first to read and store its electronic signature (MCU_ID) and then to write data in its memory . I am using a STM32QFP64 socket linked to a JTAG ST-LINK. I am quite good in C but really beginning embedded programming so I chose Atollic Studio IDE