STM32學(xué)習(xí)筆記——使用函數(shù)庫編程控制GPIO口輸出
2.1.7GPIO_Write函數(shù)
函數(shù)名 | GPIO_Write |
函數(shù)原型 | voidGPIO_Write(GPIO_TypeDef* GPIOx,u16 PortVal) |
功能描述 | 寫數(shù)據(jù)到指定的GPIO端口數(shù)據(jù)寄存器 |
輸入?yún)?shù)1 | GPIOx:x=A…E |
輸入?yún)?shù)2 | PortVal:寫入到數(shù)據(jù)端口寄存器的值 |
輸出參數(shù) | 無 |
返回參數(shù) | 無 |
前提條件 | 無 |
調(diào)用函數(shù) | 無 |
實例:
- GPIO_Write(GPIOA,0x1101);
2.2 完整程序:
- #include"stm32f10x.h"
- voiddelay(void);
- voidGPIO_Configuration(void);
- intmain(void)
- {
- //使能GPIOC時鐘
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
- //此條語句一定要在時鐘使能后,否則無效(費了好多時間才找到原因)
- GPIO_Configuration();
- while(1)
- {
- //利用GPIO_SetBits函數(shù)與GPIO_ResetBits函數(shù)點亮與熄滅led
- GPIO_ResetBits(GPIOC,GPIO_Pin_7|GPIO_Pin_9);
- GPIO_SetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_8);
- delay();
- GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_8);
- GPIO_SetBits(GPIOC,GPIO_Pin_7|GPIO_Pin_9);
- delay();
- //利用GPIO_Write函數(shù)點亮與熄滅led
- GPIO_Write(GPIOC,0x0140);
- delay();
- GPIO_Write(GPIOC,0x0280);
- delay();
- }
- }
- //GPIO口設(shè)置
- voidGPIO_Configuration(void)
- {
- //聲明結(jié)構(gòu)體
- GPIO_InitTypeDefGPIO_InitStructure;
- //設(shè)置選擇引腳
- GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;
- //設(shè)置引腳最大輸出頻率
- GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
- //設(shè)置引腳輸出模式
- GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
- 根據(jù)設(shè)置的InitStructure初始化GPIO口
- GPIO_Init(GPIOC,&GPIO_InitStructure);
- }
- voiddelay(void)
- {
- unsignedlongj,n=100000;
- while(n--)
- {
- j=12;
- while(j--);
- }
- }
編譯通過燒寫到開發(fā)板上后,最終結(jié)果是:led1和led3與led2和led4兩兩交替亮滅。
參考文獻
[1]jhliuzj.IAR FOR ARM6.20工程創(chuàng)建建議(固件庫為3.5)[EB/OL].
http://hi.baidu.com/jhliuzj/item/459830ae7e19e136020a4d3f
[2]kiropower.IARSTM32項目工程創(chuàng)建[EB/OL].http://hi.baidu.com/kiropower/item/e20faad0007502352b35c785
[3]gasbi.startup_stm32f10x_xx.s啟動代碼文件選擇[EB/OL].
http://blog.csdn.net/gasbi/article/details/7545568,2012-05-08/2012-08-25.
[4]IAR Systems AB.Releasenotes for the IAR C/C++ Compiler for ARM 6.20.1[EB/OL].http://supp.iar.com/FilesPublic/UPDINFO/005832/arm/doc/infocenter/iccarm.ENU.html,2012-08-25
[5]Changing.用stm32點個燈[操作寄存器+庫函數(shù)][EB/OL].
http://www.ichanging.org/stm32_gpio_led.html,
- #ifdefUSE_STDPERIPH_DRIVER
- #include"stm32f10x_conf.h"
- #endif
評論