STM32点LED灯

发布者:温馨生活最新更新时间:2024-10-09 来源: cnblogs关键字:STM32 手机看文章 扫描二维码
随时随地手机看文章

一、建立项目模板

这里的user中重复引用了system_stm32f10x.c

Output中选择Create HEXFile,并且可以选择输出路径。
Listing中可以选择输出路径。
然后在C/C++中加入两个宏:

  1. STM32F10X_MD,USE_STDPERIPH_DRIVER

并且还要勾选One ELF Section per Function,加入头文件路径:

在Debug中,使用J-Link,并设置
在Utilities,选择J-Link并Setting中:

二、写点LED代码

GPIO初始化:

  1. /**8位的LED的IO口***/

  2. #define PIN_LED (GPIO_Pin_8 | GPIO_Pin_9 |GPIO_Pin_10 |GPIO_Pin_11 |GPIO_Pin_12 |GPIO_Pin_13 |GPIO_Pin_14 |GPIO_Pin_15)


  3. void LED_INIT(void)

  4. {

  5.     GPIO_InitTypeDef GPIO_InitStructure;

  6.      GPIO_InitStructure.GPIO_Pin = PIN_LED;

  7.      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  8.      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

  9.     

  10.      /*打开LED使用的GPIO的时钟使能*/

  11.      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

  12.      /*进行初始化*/

  13.      GPIO_Init(GPIOB, &GPIO_InitStructure);

  14. }

设置多位GPIO电平

  1. /****************************

  2. * Function Name : LED_SET

  3. * Description : 设置LED的状态,使用了8位。因为一次使用16位,所以要先读取

  4. * Input : data

  5. * Output : None

  6. * Return : None

  7. *****************************/

  8. void LED_SET(uint8_t data)

  9. {

  10.     uint16_t setValue;


  11.     setValue = GPIO_ReadOutputData(GPIOB);

  12.         setValue &= 0x00ff; //使用高8位

  13.      setValue |= (uint16_t)data <<8;

  14.     

  15.      GPIO_Write(GPIOB, setValue);

  16. }

简单的main函数

  1. /****************************************************************************

  2. * Function Name : main

  3. * Description : Main program.

  4. * Input : None

  5. * Output : None

  6. * Return : None

  7. ****************************************************************************/


  8. int main(void)

  9. {

  10.     LED_INIT();

  11.     LED_SET(0x0f);


  12.     while (1)

  13.     {

  14.         LED_SET(0xff);

  15.         Delay(10);

  16.         LED_SET(0x00);

  17.         Delay(10);

  18.     }

  19. }


  20. /*******************************************************************************

  21. * Function Name : Delay

  22. * Description : ???±???ò

  23. * Input : c

  24. * Output : None

  25. * Return : None

  26. *******************************************************************************/


  27. void Delay(uint16_t c)

  28. {

  29.     uint16_t a,b;

  30.     for(; c>0; c--)

  31.         for(a=1000; a>0; a--)

  32.             for(b=1000; b>0; b--);

  33. }

可以直接设置单独的GIPO输出位:

  1. GPIO_WriteBit(GPIOB, GPIO_Pin_15, Bit_SET);

  2. GPIO_WriteBit(GPIOB, GPIO_Pin_15, Bit_RESET);


关键字:STM32 引用地址:STM32点LED灯

上一篇:STM32 JTAG接口PB3PB4配置为IO口使用问题
下一篇:Stm32使用Usart代码例子(轮询、中断、DMA)

推荐阅读最新更新时间:2024-11-06 23:43

STM32学习笔记—SysTick定时器
Q:什么是SYSTick定时器? SysTick 是一个24 位的倒计数定时器,当计到0 时,将从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中的使能位清除,就永不停息。 Q:为什么要设置SysTick定时器? (1)产生操作系统的时钟节拍 SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。在以前,大多操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律。 (2)便于不同处理器之间程序移植。 Cortex㎝3处
[单片机]
STM32学习之:Context—M3简介
Cortex-M3概览 (1)简介 Cortex-M3是一个 32位处理器内核。内部的数据路径是 32位的,寄存器是 32位的,存储器接口也是 32 位的。CM3 采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖。这样一来数据访问不再占用指令总线,从而提升了性能。为实现这个特性, CM3内部含有好几条总线接口,每条都为自己的应用场合优化过,并且它们可以并行工作。但是另一方面,指令总线和数据总线共享同一个存储器空间(一个统一的存储器系统)。 比较复杂的应用可能需要更多的存储系统功能,为此CM3提供一个可选的MPU,而且在需要的情况下也可以使用外部的 cache。另外在CM3中,Both小端模式和
[单片机]
STM32 x 翌控科技 x 米尔电子 | STM32MP135开放式高实时高性能PLC控制器解决方案发布
01前言 随着工业数字化进程加速与IT/OT深入融合,不断增加的OT核心数据已经逐步成为工业自动化行业的核心资产,而OT层数据具备高实时、高精度、冗余度高、数据量大等等特点,如何获取更加精准的OT数据对数字化进程起到至关重要的作用,同时随着国内工业控制系统逐步进入中高端应用,更加精准的控制至关重要,因此工业控制系统高实时高性能需求尤其突出。 面对以上挑战,合作伙伴翌控科技基于米尔STM32MP135开发板发布开放式高实时高性能PLC控制器解决方案,将高精准数据采集、预处理、存储、通信与高实时控制融为一体,为控制系统迈向完全数字化中高端控制提供一个非常好的选择。 02STM32MP135处理器简介 STM32MP1
[嵌入式]
<font color='red'>STM32</font> x 翌控科技 x 米尔电子 | STM32MP135开放式高实时高性能PLC控制器解决方案发布
stm32 时钟配置——外部时钟倍频、内部时钟倍频
stm32可选的时钟源 在STM32中,可以用内部时钟,也可以用外部时钟,在要求进度高的应用场合最好用外部晶体震荡器,内部时钟存在一定的精度误差。 准确的来说有4个时钟源可以选分别是HSI、LSI、HSE、LSE(即内部高速,内部低速,外部高速,外部低速),高速时钟主要用于系统内核和总线上的外设时钟。低速时钟主要用于独立看门狗IWDG、实时时钟RTC。 ①、HSI是高速内部时钟,RC振荡器,频率为8MHz,上电后默认的系统时时钟 SYSCLK = 8MHz,Flash编程时钟。 ①、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。 ③、LSI是低速内部时钟,RC振荡器,频率
[单片机]
<font color='red'>stm32</font> 时钟配置——外部时钟倍频、内部时钟倍频
STM32的PWM输入模式设置并用DMA接收数据
环境: 主机:WIN7 开发环境:MDK4.72 MCU:STM32F103 说明: 项目中需要进行红外学习,如果采用输入捕获的方式,因为定时器只能捕获上升沿或者下降沿,所以只能获得周期,而不能得到具体的红外波的高低电平的时间.所以采用PWM输入的方式进行捕获. 采用的是PA8脚,对应TIM1的通道1. 源代码: /********************************************************************* * 函数 ***********************************************************
[单片机]
STM32开发笔记94: 忽略PlatformIO中的特定警告
单片机型号:STM32F091RCT6 尝试在PlatformIO中使用STM32Cube进行项目的开发工作,第1次编译,即出现如下图的警告。 该警告在GCC中有详尽的解释: Allows the compiler to assume the strictest aliasing rules applicable to the language being compiled. For C (and C++), this activates optimizations based on the type of expressions. In particular, an object of one type is ass
[单片机]
<font color='red'>STM32</font>开发笔记94: 忽略PlatformIO中的特定警告
STM32学习之:GPIO最简单操作步骤
需用到的 .c 库函数为 stm32f10x_gpio.c 和stm32f10x_rcc.c 1. 启动相应Port x的RCC(复位始终控制) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOx, ENABLE); x可以是A到G , GPIO都由APB2(高速外设)时钟控制 2. GPIO初始结构中的三个参数赋值(该结构名需程序前定义: GPIO_InitTypeDef GPIO_InitStructure; ) 三个参数分别为 引脚:GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_
[单片机]
STM32串口操作相关事项
放了一段时间,对stm32似乎有点陌生,总结一下! (基于3.0固件库,芯片stm32f103rbt6) 1、配置串口的管脚和时钟 由于串口1、2是在GPIOA上: 所以要是能串口GPIOA、AFIO和1或者2的串口时钟,代码如下: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO | RCC_APB2Periph_USART1 , ENABLE); 2、对串口的具体物理管脚进行相应的配置: /* A9 USART1_Tx */ GPIO_InitStructure.GPIO_Pin = GPIO_Pi
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved