精华内容
下载资源
问答
  • STM32点亮LED程序

    千次阅读 2019-03-31 14:42:51
    #include"led.h" /* * @brief None program. * @param None * @retval None * */ void LED_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd...

    #include"led.h"
    /*
      * @brief  None  program.
      * @param  None
      * @retval None
      *
        */
    void LED_GPIO_Config(void)
    {
            GPIO_InitTypeDef GPIO_InitStructure;
        
            RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;    
            GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;       
            GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
            GPIO_Init(GPIOB, &GPIO_InitStructure);
     
            GPIO_SetBits(GPIOB, GPIO_Pin_9);     
    }


    void Delay(uint16_t c)
    {
        uint16_t a,b;
        for(; c>0; c--)
            for(a=1000; a>0; a--)
                for(b=1000; b>0; b--);
    }

    //以上是点亮一个LED小灯的.C文件

     //这个是头文件


    #ifndef __LED_H
    #define    __LED_H
     
    #include "stm32f10x.h"

    #define ON    0
    #define OFF    1
     
    #define LED11_workStatus(a) if(a) GPIO_SetBits(GPIOB,GPIO_Pin_9); else GPIO_ResetBits(GPIOB,GPIO_Pin_9)
     
    void Delay(uint16_t c);
    void LED_GPIO_Config(void);
    #endif

     

    //主函数部分
    #include"stm32f10x.h"
    #include"led.h"

    int main (void)
    {
     
        LED_GPIO_Config();
        
        while(1)
        {
            LED11_workStatus(OFF); 
            Delay(10);
                LED11_workStatus(ON); 
                    Delay(10);
        }
    }

    运行平台谱中STM32开发板平台.HC6800-EM3 V.0

     

    展开全文
  • 编译环境搭建好后开始尝试我的第一个Zephyr程序编译和运行,手里有一块stm32f103c8t的开发板,Zephyr支持nucleo_f103rb开发板,...例子samples\basic\blinky是一个LED闪烁的程序,先修改boards\arm\nucleo_f103rb\boa

    编译环境搭建好后开始尝试我的第一个Zephyr程序编译和运行,手里有一块stm32f103c8t的开发板,Zephyr支持nucleo_f103rb开发板,所以以此来编译我的第一个程序。

    在Zephyr根目录执行

    source zephyr-env.sh

    例子samples\basic\blinky是一个LED闪烁的程序,先修改boards\arm\nucleo_f103rb\board.h,设置正常的LED PIN脚。

    进入samples\basic\blinky目录执行

    make BOARD=nucleo_f103rb

    最终输出

    ...
    AR kernel/lib.a
    CC src/main.o
    LD src/built-in.o
    AR libzephyr.a
    LINK zephyr.lnk
    IRQ isr_tables.c
    CC isr_tables.o
    LINK zephyr.elf
    BIN zephyr.bin

    编译成功,使用STLINK下载到开发板上运行没反应,通过ST提供的工具查看MCU运行状态,反复run和halt, CPU始终停止在0x8000824上下,一定是这里出现了死循环,根据以往调试的经验判断应该就是时钟设置的不对,到out目录下查看有什么可以参考的文件,打开zephyr.lst,哇,就是它,所有的地址对应的代码都在这里,并且是以源码的形式呈现,我还以为会是汇编形式的文件,完全超乎我的预期。

    找到这样一段:

    #ifdef CONFIG_CLOCK_STM32F10X_PLL_SRC_HSE
    
    	/* wait for to become ready */
    	rcc->cr.bit.hseon = 1;
     800081a:	6823      	ldr	r3, [r4, #0]
     800081c:	f443 3380 	orr.w	r3, r3, #65536	; 0x10000
     8000820:	6023      	str	r3, [r4, #0]
    	while (rcc->cr.bit.hserdy != 1) {
     8000822:	6823      	ldr	r3, [r4, #0]
     8000824:	0399      	lsls	r1, r3, #14
     8000826:	d5fc      	bpl.n	8000822 <stm32f10x_clock_control_init+0x5a>
    	}
    ...

    果然是和HSE有关,上下文中还有这样的判断#ifdef CONFIG_CLOCK_STM32F10X_HSE_BYPASS

    查看nucleo_f103rb_defconfig文件中有这样的定义和描述:

    # use HSE as PLL input
    CONFIG_CLOCK_STM32F10X_PLL_SRC_HSE=y
    # however, the board does not have an external oscillator, so just use
    # the 8MHz clock signal coming from integrated STLink
    CONFIG_CLOCK_STM32F10X_HSE_BYPASS=y

    再看STM32F103的reference manual有关于时钟的介绍:



    看来就是这里的问题,我的开发板与官方的nucleo_f103rb外部时钟源不同,删除nucleo_f103rb_defconfig中的CONFIG_CLOCK_STM32F10X_HSE_BYPASS=y,重新make并下载到开发板上后LED能够闪烁了,至此我的第一个Zephyr运行成功^_^

    展开全文
  • 15.编写LED程序及反汇编工具

    千次阅读 2016-04-05 16:16:50
    15.1.硬件工作原理及原理图查阅 15.2.数据手册查阅及相关寄存器浏览 15.3.从零开始手写汇编点亮LED 15.4.汇编实现LED闪烁效果 15.5.汇编实现流水灯效果 15.6.反汇编的原理和objdump工具

    15.1.硬件工作原理及原理图查阅
    (1)LED物理特性介绍:LED本身有2个接线点,1个是LED的正极,1个是LED的负极。LED这个硬件的功能就是点亮或者不亮,物理上想要点亮一颗LED只需要给它的正负极上加正电压即可,要熄灭1颗LED只需要去掉电压即可。
    (2)查阅原理图了解板载LED硬件接法:查阅原理图,发现GEC210开发板上共有6颗LED(4颗在核心板上D1~D4,2颗在底板上D1和D3);底板D1接法(VDD_5V(5V直流)通过低压差稳压芯片(AMS1086CM-3.3)输出VDD_IO(3.3V直流);即D1正极接3.3V(VDD_IO),负极接地,则该颗LED只要上电就会常亮,即该颗LED是电源指示灯);底板D3接法(D3正极接3.3V,负极接SoC上的1个引脚(GPG0_3));核心板D1~D4的接法(正极接3.3V(VDD_REG1_IO),负极接了SoC上的1个引脚(D1~D4分别对应GPJ2_0~GPJ2_3))。
    (3)如何点亮及熄灭LED(GPIO):因为正极已经定了(3.3V),而负极接在了SoC的引脚上,可以通过SoC中编程来控制负极的电压值,因此我们可以通过程序控制负极输出低电平(0V),这样在正负极上就有了压差,LED即可点亮。


    15.2.数据手册查阅及相关寄存器浏览
    (1)GPIO概念的引入:通用输入输出(general purpose input output);GPIO就是芯片的引脚(芯片上的引脚有些不是GPIO),作为GPIO的这类引脚,其功能和特点是可以被编程控制其工作模式和电压高低等;我们设计电路时就把LED接在了某个GPIO上,这样我们就可以通过编程控制GPIO的模式和输入输出值来操控LED的亮灭。
    (2)阅读数据手册GPIO部分:当我们想要通过编程操控GPIO来操作LED时,我们首先需要通读一下S5PV210的数据手册中有关于GPIO的部分,这部分在数据手册的Section2.2中。
    (3)GPIO相关的寄存器介绍:我们当前要操作的硬件是LED,但是LED实际是通过GPIO来间接控制的,所以我们要操作的硬件是SoC的GPIO,要操作这些GPIO,必须通过设置它们的寄存器(见图1)。
    (4)真正操控LED的硬件主要为GPJ2CON和GPJ2DAT,点亮LED编程步骤:1.操控GPJ2CON寄存器中,选中output模式;2.操控GPJ2DAT寄存器,相应的位设置为0。


    15.3.从零开始手写汇编点亮LED
    (1)GPxCON和GPxDAT寄存器分析:GPJ2端口共有8个引脚(GPJ2_0~GPJ2_7),相关的重要寄存器为GPJ2CON和GPJ2DAT;GPJ2CON寄存器可设置8个引脚的工作模式(32/8=4,每个引脚对应4bit,譬如GPJ2_0对应的bit位为bit0~bit3);譬如给bit0~bit0写入0b0001,GPJ2_0引脚就工作在输出模式。
    (2)从零开始写代码操作寄存器:1.硬件接法和引脚(GPJ2_0、GPJ2_1、GPJ2_2、GPJ2_3),低电平亮/高电平灭;2.GPJ2CON(0xE0200240)寄存器和GPJ0DAT(0xE0200244)寄存器;3.工程管理Makefile、mkv210_image.c、write2sd.sh等文件。
    (3)编译下载运行:编译时用我们的工程管理,直接make编译得到led_usb.bin和led_sd.bin;下载运行可使用usb启动dnw下载,也可以用sd卡烧录下载。


    15.4.汇编实现LED闪烁效果
    (1)闪烁效果原理分析:闪烁 = 亮 + 延时 + 灭 + 延时 + 亮 + 延时…。
    (2)延时函数原理:在汇编中实现延时即用一些没有目的的代码来执行消耗时间,达到延时的效果。
    (3)汇编编写延时函数:用某个寄存器存放某个数字,然后在循环中每个循环里给数字减1,然后再判断这个数字的值是否为0.如果为0则停止循环,如果不为0则继续循环。
    (4)汇编编写及调用函数:汇编中整个汇编的主程序是死循环,该死循环是我们汇编程序的主体,类似于C中的main函数;其它函数必须写在该主死循环程序外面,不然会出错。
    (5)总结:汇编编写delay延时函数时,要注意函数的初始化和函数体的位置,不能把初始化写在了循环体内;汇编中调用函数用bl指令,子函数中最后用mov pc, lr来返回。


    15.5.汇编实现流水灯效果
    (1)流水灯原理分析:流水灯又叫跑马灯,即挨着的LED依次点亮熄灭(同时只有1颗LED亮)。
    (2)流水灯编写:用位取反操作符来轻松愉快的实现单颗LED点亮流水效果。
    (3)编程操控某个硬件的步骤:1.分析硬件工作原理;2.分析原理图;3.分析数据手册;4.找到相关的SFR;5.写代码设置寄存器得到想要的效果。


    15.6.反汇编的原理和objdump工具
    (1)arm-linux-objdump -D led.elf > led_elf.dis(-D表示反汇编;>左边的是elf的可执行程序;>右边的是反汇编生成的反汇编程序);objdump是gcc工具链中的反汇编工具,作用是由编译链接好的elf格式的可执行程序反过来得到汇编源代码。
    (2)反汇编的原因:1.逆向破解,黑客大神常用的手段;2.调试程序时,反汇编代码可以帮助我们理解程序(我们学习时使用objdump主要目的是这个),尤其是在理解链接脚本、链接地址等概念时;3.把C语言源代码编译链接生成的可执行程序反汇编后得到对应的汇编代码,可以帮助我们理解C语言和汇编语言之间的对应关系,有助于深入理解C语言。
    (3)反汇编文件的格式:汇编(assembly)反汇编(dissembly);标号地址(00000000)、标号名字(<_start>:)、指令地址(标号地址+偏移量(00000000+0))、指令机器码(e59f0060)、指令机器码反汇编到的指令(ldr r0, [pc, #96]);ARM汇编中用地址池方式来实现非法立即数。
    (4)初识指令地址:下载烧录执行的bin文件,内部其实是很多条指令机器码,每条指令机器码都有对应的地址,该地址是链接时ld指定的(ld根据程序员提供的链接脚本来指定)。
    (5)反汇编工具帮助我们分析链接脚本:反汇编的时候得到的指令地址是链接器考虑了链接脚本之后得到的地址,而我们写代码时通过指定连接脚本来让链接器给我们链接合适的地址;但有时候我们写的链接脚本有误(或者我们不知道该链接脚本执行效果如何),此时可通过阅读反汇编文件来分析该链接脚本的效果,确认是否达到了我们的目的。


    这里写图片描述


    15.led_s_v1.0/
    led.S
    /*
     * 公司:XXXX
     * 作者:Rston
     * 博客:http://blog.csdn.net/rston
     * GitHub:https://github.com/rston
     * 项目:编写LED程序及反汇编工具
     * 功能:汇编实现点亮第1个和第3个LED灯。
     */
    
    #define GPJ2CON 0xE0200280
    #define GPJ2DAT 0xE0200284
    
    .global _start                      // 把_start链接属性改为外部,则外部其它文件可看见_start 
    _start:
        // 第1步:将0x00001111写入0xE0200280位置(GPJ2CON)
        // 即设置GPJ2CON0~GPJ2CON3共4个引脚为输出模式
        ldr r0, =((1<<0) | (1<<4) | (1<<8) | (1<<12))   
        ldr r1, =GPJ2CON                // 通过=号看出使用的是ldr伪指令,因为编译器可判断该立即数
        str r0, [r1]                    // 是合法立即数/非法立即数。
                                        // 寄存器间接寻址,把r0中的数写入到以r1中的数为地址的内存中去
    
        // 第2步:将0b00001010写入0xE0200284位置(GPJ2DAT)
        // 即设置GPJ2DAT0~GPJ2DAT3为0b00000101
        ldr r0, =((1<<0) | (0<<1) | (1<<2) | (0<<3))
        ldr r1, =GPJ2DAT
        str r0, [r1]
    
        b .                             // 死循环,程序停留在这里,.表示当前指针的地址
                                        // 裸机程序是直接在CPU上运行的,CPU会逐行运行裸机程序直至CPU断电关机
                                        // 如果裸机程序全部被执行完了CPU就会跑飞(跑飞结果未定义)
                                        // 为了不让CPU跑飞即在整个裸机程序执行完后添加死循环

    15.led_s_v2.0/
    led.S
    /*
     * 公司:XXXX
     * 作者:Rston
     * 博客:http://blog.csdn.net/rston
     * GitHub:https://github.com/rston
     * 项目:编写LED程序及反汇编工具
     * 功能:汇编实现4个LED灯的闪烁。
     */
    
    #define GPJ2CON 0xE0200280
    #define GPJ2DAT 0xE0200284
    
    .global _start                      // 把_start链接属性改为外部,则外部其它文件可看见_start 
    _start:
        // 第1步:将0x00001111写入0xE0200280位置(GPJ2CON)
        // 即设置GPJ2CON0~GPJ2CON3共4个引脚为输出模式
        ldr r0, =((1<<0) | (1<<4) | (1<<8) | (1<<12))   
        ldr r1, =GPJ2CON                // 通过=号看出使用的是ldr伪指令,因为编译器可判断该立即数
        str r0, [r1]                    // 是合法立即数/非法立即数。
                                        // 寄存器间接寻址,把r0中的数写入到以r1中的数为地址的内存中去
    flash:  
        // 第2步:点亮4个LED灯
        ldr r0, =((0<<0) | (0<<1) | (0<<2) | (0<<3))
        ldr r1, =GPJ2DAT
        str r0, [r1]
    
        // 第3步:延时
        bl delay                        // 使用bl调用延时函数,会将返回地址保存在lr寄存器中
    
        // 第4步:熄灭4个LED灯
        ldr r0, =((1<<0) | (1<<1) | (1<<2) | (1<<3))
        ldr r1, =GPJ2DAT
        str r0, [r1]
    
        // 第5步:延时
        bl delay                        // 使用bl调用延时函数,会将返回地址保存在lr寄存器中
    
        b flash                         // 继续循环,使用b跳转,不保存返回地址到lr寄存器中
    
    // 延时函数,函数名为delay
    delay:
        ldr r2, =9000000
        ldr r3, =0x0
    delay_loop:
        sub r2, r2, #1                  // r2 = r2 - 1
        cmp r2, r3                      // cmp会影响CPSR中的Z标志位,若r2等于r3,则Z标志位置1,下句中的bne不成立
        bne delay_loop
        mov pc, lr                      // 函数调用返回

    15.led_s_v3.0/
    led.S
    /*
     * 公司:XXXX
     * 作者:Rston
     * 博客:http://blog.csdn.net/rston
     * GitHub:https://github.com/rston
     * 项目:编写LED程序及反汇编工具
     * 功能:汇编实现4个LED流水灯。。
     */
    
    #define GPJ2CON 0xE0200280
    #define GPJ2DAT 0xE0200284
    
    .global _start                      // 把_start链接属性改为外部,则外部其它文件可看见_start 
    _start:
        // 第1步:将0x00001111写入0xE0200280位置(GPJ2CON)
        // 即设置GPJ2CON0~GPJ2CON3共4个引脚为输出模式
        ldr r0, =((1<<0) | (1<<4) | (1<<8) | (1<<12))   
        ldr r1, =GPJ2CON                // 通过=号看出使用的是ldr伪指令,因为编译器可判断该立即数
        str r0, [r1]                    // 是合法立即数/非法立即数。
                                        // 寄存器间接寻址,把r0中的数写入到以r1中的数为地址的内存中去
    flash:  
        // 第2步:点亮LED0
        ldr r0, =~(1<<0)
        ldr r1, =GPJ2DAT
        str r0, [r1]
        bl delay                        
    
        // 第3步:点亮LED1
        ldr r0, =~(1<<1)
        ldr r1, =GPJ2DAT
        str r0, [r1]
        bl delay                        
    
        // 第4步:点亮LED2
        ldr r0, =~(1<<2)
        ldr r1, =GPJ2DAT
        str r0, [r1]
        bl delay                        
    
        // 第3步:点亮LED3
        ldr r0, =~(1<<3)
        ldr r1, =GPJ2DAT
        str r0, [r1]
        bl delay                        // 使用bl调用延时函数,会将返回地址保存在lr寄存器中
    
        b flash                         // 继续循环,使用b跳转,不保存返回地址到lr寄存器中
    
    // 延时函数,函数名为delay
    delay:
        ldr r2, =9000000
        ldr r3, =0x0
    delay_loop:
        sub r2, r2, #1                  // r2 = r2 - 1
        cmp r2, r3                      // cmp会影响CPSR中的Z标志位,若r2等于r3,则Z标志位置1,下句中的bne不成立
        bne delay_loop
        mov pc, lr                      // 函数调用返回

    展开全文
  • 旋转LED程序代码

    千次阅读 2010-10-18 16:36:00
    很好的资源代码

    很好的资源代码

    展开全文
  • 树莓派-WiringPi-C语言-led程序

    千次阅读 2018-08-31 10:13:35
    在命令行语句的输入中,输入:gcc -led.c -o led -lwiringPi【输入语句的格式是:gcc -filename.文件的后缀 -ofilename -lwiringPi】。其中最后的-lwiringPi 十分重要,这是与wiringPi库进行连接过程的语句块,如果...
  • 首先要编写字符设备驱动 #include #include #include #include #include ...#include "led.h" #define LED_MAJOR 245 //主设备号 unsigned int *led_config; unsigned int *led_data; uns
  • •在main.c中添加如下...•#include "dsk6416_led.h" •#include "dsk6416_dip.h" •void main() •{ • /* 初始化板级支持库 */ • DSK6416_init(); • /* 初始化BSL的LED和DIP开 关模块 */ • DSK6416_LED_init();
  • STM32编程环境Keil里面需要很多的设置。首先、头文件和源文件设置;其次,调试设置。 而该问题就是调试设置中没有选中Reset and run选项,程序下载进去了,就是没有运行!
  • 程序主要考虑按键、LED点亮、中断模式(IRQ)之间的联系 以下为main.c代码部分,其他请参考三星提供的2440用例代码 #define GLOBAL_CLK 1 #include #include #include"def.h" #include"option.h" #include"2440...
  • arm-linux 学习(1)点亮第一个led程序

    千次阅读 2018-01-06 23:36:04
    @ 功能:LED点亮程序 @ 备注:GPF4,5,6为输出引脚,低电平亮 @ 第1个指令:ldr R0,[R1] //假设R1的值是x,读取地址x上的数据(4字节)保存到RO中 @ 第2个指令:str R0,[R1] //假设R1的值是x,把RO上的值写到...
  • 1.点亮1个led程序分析(汇编)

    千次阅读 2013-10-05 17:28:37
    最终目标: 点亮led灯 1:通过原理图,确定nLED_1的引脚关系 ---- GPF4 2:查看S3C2440手册,找到控制GPF4引脚的方法 ---- GPFCON(配置寄存器) ---- GPFDAT(数据寄存器) 3:往GPFCON和GPFDAT这两个寄存器写数据,...
  • 1.点亮1个led程序分析(C语言)

    千次阅读 2013-10-05 22:18:08
    启动文件 @****************************************************************************** @ File:crt0.S @ 功能:通过它转入C程序 ... rm -f led_on_c.dis led_on_c.bin led_on_c_elf *.o  
  • 单片机定时驱动led程序2--c语言实现

    千次阅读 2006-04-23 15:31:00
    实验要求: 使用定时/记数中断控制led1亮0.1s,灭0.1s,led2亮1s,灭1s,led3亮10s,灭10s,led4亮100s,灭100s.//////////////////////////////////////////////////////////////////////////////////////////////////////...
  • 如果您是ADS用户,你省去了很多麻烦,但我不确定你省去的这些麻烦是否值得,这里介绍的是一种麻烦的方式,linux下的led程序。 代码Head.s .extern main .text .global _start _start: b reset reset: ...
  • xilinx EDK11.5 在virtex6 ML605上的LED程序

    千次阅读 2010-03-23 16:29:00
    这个程序通过串口输入命令,控制不同LED亮灭。其中地址0xC0E00000是我们构建的IP核寄存器地址,根据串口命令,通过像这个寄存器写入不同的值来控制LED。如图11所示:   #include "xparameters.h" #...
  • Led驱动程序及应用程序编写

    千次阅读 2016-08-14 15:20:08
    突然发现好长时间不写驱动,写驱动的套路都忘的差不多了,而且以前写的驱动程序都不够模块化,想复用的话还需要做些修改,所以,还是先写一下LED驱动,熟悉一下套路,顺便把程序模块化了,留着以后备用。 1.先看...
  • 树莓派Pi 3B设备驱动程序开发_LED点灯程序 摘要: 从开发基于Linux的树莓派设备驱动开始,学习近一个星期,从一开始理解驱动程序与内核、应用程序的关系,到驱动程序基本框架,到树莓派的本地编译和交叉编译。今天,...
  • LED呼吸灯程序

    千次阅读 2019-06-08 22:59:08
    LED呼吸灯是在闪烁的基础上,调节LED点亮的时间和熄灭的时间,进而时LED呈现出逐渐变亮或者变暗的过程。 我们知道点亮或者熄灭LED就是给端口高低电平即1或0,通过调节占空比,改变1和0 的占用时间即可达到此效果。 ...
  • 51单片机闪烁LED程序

    万次阅读 2018-02-05 20:53:59
    #include"reg52.h" typedef unsigned char u8; typedef unsigned int u16;...sbit led=P2^0; void delay(u16 i) { while(i--); } void main() { while(1) { led=0; delay(50000); le...
  • 3.6 LED灯闪烁程序

    千次阅读 2016-07-04 20:07:33
    点亮 LED 小灯的程序我们第二课完成了,就是让 LED = 0。熄灭小灯的程序也很简单,就是 LED = 1。点亮和熄灭都会了,那么如果我们在亮和灭中间加个延时,反复不停的点亮和熄灭小灯,就成了闪烁了。 我们首先复习...
  • LED驱动程序设计

    千次阅读 2012-08-24 13:23:08
    首先声明,此文章是基于对国嵌视频教程中tiny6410有关视频教程的总结,为方便大家的...好了,接下来步入正题,此处将介绍tiny6410 LED驱动程序的设计。 2 下面来看看tiny6410关于LED的原理图如图(1)所示:
  • LED驱动程序的编写

    千次阅读 2018-08-10 14:51:08
    2,完整的驱动程序组成 **3,在应用空间和内核空间(驱动)之间的数据交换 ===============================================** 一,模块传参和模块调用 1,模块传参——-在加载模块时,同时给模块传参数 1&amp;...
  • LED灯控制程序

    千次阅读 2019-04-13 10:54:21
    /******************************************************************* ... File Name: Led_control.c * > Author: fly * > Mail: 1358326274@qq.com * > Create Time: 2019å¹´03月29æ—...
  • pcDuino裸板程序-led

    千次阅读 2013-05-24 23:59:40
    最近调驱动时,调试led时遇到了点问题,于是回过头来再写个led裸板程序。在我写的pcDuino第一个裸板程序uart的基础上,再写个led裸板程序还是很轻松的。很多人觉得没有必要写什么pcDuino裸板程序,觉得没啥意义。我...
  • 4412裸机程序之点亮LED

    千次阅读 2015-11-14 14:47:46
    4412裸机程序之点亮LED 看一下Tiny4412原理图: 在Tiny4412核心板上有4个可编程控制LED,我们来点亮led1, led1右边接3.3V电源,左边接GPM4_0接口,把GPM4_0设成低电平led灯亮,设成高电平led灯灭。 GPM4_0...
  • STM32 LED 初始化程序

    千次阅读 2020-02-13 18:17:41
    把stm32 初始化led灯的程序记录一下,回头可以直接使用,不用每次都找了 //led.c #include "led.h" void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; /* 使能GPIOA时钟 */ RCC_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 87,667
精华内容 35,066
关键字:

led程序