`

Main函数之Port_Init分析

    博客分类:
  • ARM
 
阅读更多

这个函数的功能,将I/O口初始化,就是配置管脚的功能,因为有很多管脚是 复用 的引脚。
相应的管脚的寄存器,都在2440adr.h中定义了
#define rGPACON    (*(volatile unsigned *)0x56000000)
分析一下:volatile表示易挥发性,表示这个值容易改变(不是很懂),0x56000000就是GPACON寄存器的地址(volatile unsigned *) 表示强制转换,将0x56000000转换为指针类型,指针的内容就是这个地址
最外边的 * 表示取出指针所指向的这个地址的内容。就是取出GPACON寄存器中的内容。

查看datasheet知,当I/O口设置为input、output时,GPBDAT的值设置才有意义,就是说,I/O输出的值,为相应的在GPBDAT中设置的值。
GPBUP上拉电阻,简单的说上拉电阻在I/O口高电平的时候可以加强驱动能力,下拉电阻一般是使开机的时候管脚低电平。这个目前,我不是很懂。只要知道他的作用就行了。有份总结,感兴趣的可以看看http://hi.baidu.com/hybespecial/blog/item/a909223fc0511be53c6d97ac.html

分享到:
评论

相关推荐

    Atmel微控制器软件库函数ASF操作指南(IO端口篇)

    IO端口操作涉及的主要函数包括端口初始化函数`ioport_init()`,设置端口方向函数`ioport_set_pin_dir()`,设置端口电平函数`ioport_set_pin_level()`,以及设置端口模式函数`ioport_set_pin_mode()`等。 以下是一段...

    8051串口通信源程序

    接着是端口初始化函数`PORT_Init(void)`。这个函数用于设置单片机的I/O端口,例如配置特定引脚作为输入或输出,以满足串口通信的需求。在8051单片机中,通常会使用特定端口(如P1、P2或P3)的某些引脚作为串口的RXD...

    nvic.zip_HAL库 STM32 NVIC_NVIC实现LED闪烁_STM32 nvic_nvic 按键_stm32 按键

    HAL_GPIO_Init(GPIO_PORT, &GPIO_InitStruct); // KEY_PIN配置为输入 GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(KEY_GPIO_PORT, &GPIO_InitStruct); ...

    C8051F060ADC转换程序

    接下来,我们看到一系列初始化函数,如SYSCLK_Init()、PORT_Init()、ADC0_Init()、ADC1_Init()和ADC2_Init()。这些函数用于配置系统的时钟、端口以及ADC的相关设置。例如,SYSCLK_Init()函数用于设定系统时钟,而...

    超声波测距,51单片机和c8051单片机程序文件.doc

    - `PORT_Init()`:端口初始化函数。 - `Oscillator_Init()`:时钟初始化函数。 - `write_595()`:写入数据到595移位寄存器的函数。 - `lcd_init()`:LCD初始化函数。 - `write_()`:写入LCD地址的函数。 - `write_...

    STM32F103 HAL 点灯

    2. **HAL库的初始化**:在使用HAL库进行编程之前,首先需要初始化HAL库,这通常在main函数中完成。通过`HAL_Init()`函数启动系统时钟配置,然后调用`HAL_RCC_OscConfig()`和`HAL_RCC_ClockConfig()`来配置外部晶振和...

    C8051f340控制数码管显示数字

    3. **函数声明**: 定义了三个函数:`OSCILLATOR_Init`、`PORT_Init` 和 `delay`,用于初始化振荡器、端口和延时。 4. **主函数**: - 初始化振荡器和端口。 - 设置初始值 `temp = 0x01`。 - 主循环中通过 `_crol_...

    .s100,sht11完全驱动设计

    init_uart0(); _SEI(); twi_init(); while(1) { sht11_device_str(); CO2Sample(); deley_s(3); /*发送温度数据*/ usart0_str_sendArray( "temp=",strlen("temp=")); usart0_str_sendArray( (uchar*)op...

    STM32入门详细例程之---点亮我的LED

    HAL_GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct); while (1) { // 点亮LED HAL_GPIO_WritePin(LED_GPIO_PORT, LED_GPIO_PIN, GPIO_PIN_SET); // 延时,模拟闪烁效果 HAL_Delay(1000); // 熄灭LED HAL_...

    stm32f0系列的基本led控制keil版本

    HAL_GPIO_Init(LED_PORT, &GPIO_InitStruct); } ``` 这段代码开启了GPIOA时钟,设置了LED所在引脚为推挽输出模式,无上拉下拉,并设置低速。 4. **LED控制函数**:编写控制LED亮灭的函数,如`Toggle_LED()`: ...

    C语言29:用P0 、P1口显示整型函数返回值.rar

    void port_init() { P0 = 0xFF; P1 = 0xFF; } // 显示整数函数 void display_int(int num) { // 在这里实现整数到二进制的转换和分段显示 } // 延时函数 void delay(unsigned int time) { // 使用循环实现延迟...

    用STC12C5A60S2测试AD转换程序.pdf

    在 main 函数中,首先调用初始化 1602 函数 init_1602 和初始化 AD 函数 init_adc,然后进入死循环,通过获取 AD 结果函数 get_adc 获取结果,并将结果显示在 1602 显示屏上。延时函数 delay_ms 实现了结果的实时...

    GPIO输出—使用固件库点亮LED灯_GPIO_

    HAL_GPIO_Init(LED_PORT, &GPIO_InitStruct); // 初始化GPIO HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_SET); // 点亮LED(设置GPIO为高电平) while (1) { // 应用逻辑 } } ``` 在这个例子中,`LED_...

    4、stm32单片机之点亮1个LED.zip

    在“4、stm32单片机之点亮1个LED.zip”这个压缩包中,我们主要关注的是如何使用STM32控制一个LED灯,这是嵌入式开发中的基础操作,通常用于验证硬件连接以及程序运行的基本功能。 首先,我们需要了解STM32的GPIO...

    基于Mini51板的数字示波器设计

    串口初始化函数`rs232_port_init()`设置串口工作在方式1,波特率为115200bps。`uart_put_uchar()`和`uart_get_uchar()`分别用于向串口发送和接收数据。 ```c void rs232_port_init(void) { SCON=0x50; // 串口工作...

    STM32F103实验:按键输入程序源代码.rar

    HAL_GPIO_Init(KEY_PORT, &GPIO_InitStruct); // 开启EXTI线0中断 HAL_NVIC_EnableIRQ(EXTI0_IRQn); } ``` 然后,我们需要设置中断服务程序来响应按键事件。当按键按下时,EXTI(外部中断)线路会被触发,此时...

    如何FTHR-G0001开发板点LED灯-资源

    HAL_GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct); // 初始化GPIO引脚 while (1) { HAL_GPIO_TogglePin(LED_GPIO_PORT, LED_GPIO_PIN); // 翻转LED状态 HAL_Delay(500); // 延时500毫秒,创建闪烁效果 } } ```...

    rs485通信程序

    - **函数声明**:接下来是一系列函数的声明,包括了时钟初始化(`Clock_Init`)、看门狗定时器初始化(`WDT_Init`)、端口初始化(`Port_Init`)、串行通信初始化(`UART_Init`)以及字节发送函数(`Send_Byte`)。这些函数...

    点亮第一盏灯开头几个代码

    HAL_GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct); // 初始化GPIO } ``` 接下来,我们需要一个循环结构来反复开关LED,模拟"流水灯"的效果。这里我们使用延时函数,例如`delay()`(Arduino)或`HAL_Delay()`(STM...

    C8051F060ADC+转换[文].pdf

    `PORT_Init()`函数则初始化微控制器的I/O端口,但具体内容未给出。 接下来,有三个ADC初始化函数:`ADC0_Init()`, `ADC1_Init()`和`ADC2_Init()`。每个函数的主要任务是配置相应的ADC模块,包括允许ADC工作,选择...

Global site tag (gtag.js) - Google Analytics