文件名称:基于stm32f103rc的USB_HID模拟键盘并发送卡号成功
- 所属分类:
- 微处理器(ARM/PowerPC等)
- 资源属性:
- [C/C++] [源码]
- 上传时间:
- 2017-07-12
- 文件大小:
- 2.53mb
- 下载次数:
- 7次
- 提 供 者:
- jing****
- 相关连接:
- 无
- 下载说明:
- 别用迅雷下载,失败请重下,重下不扣分!
介绍说明--下载内容均来自于网络,请自行研究使用
1、基于stm23f103c8t6的开发板开发,外接rc522读卡板。
2,实现让windows系统把设备认成hid键盘,当刷M1卡时,把4字节的卡号以键盘输入的形式上送到电脑。
3,已在xp,win7系统上测试。把鼠标放在文本输入框中,刷卡,卡号即可显示在文本框中,并回车换行。(1, based on the stm23f103c8t6 development board development, external rc522 read card board.
2, to achieve the windows system to recognize the device as HID keyboard, when you brush the M1 card, the 4 byte card number in the form of keyboard input to the computer.
3, has been tested on the XP, win7 system. Put the mouse in the text input box, swipe the card, the card number can be displayed in the text box, and enter the line feed.)
2,实现让windows系统把设备认成hid键盘,当刷M1卡时,把4字节的卡号以键盘输入的形式上送到电脑。
3,已在xp,win7系统上测试。把鼠标放在文本输入框中,刷卡,卡号即可显示在文本框中,并回车换行。(1, based on the stm23f103c8t6 development board development, external rc522 read card board.
2, to achieve the windows system to recognize the device as HID keyboard, when you brush the M1 card, the 4 byte card number in the form of keyboard input to the computer.
3, has been tested on the XP, win7 system. Put the mouse in the text input box, swipe the card, the card number can be displayed in the text box, and enter the line feed.)
(系统自动生成,下载前可以参看下载内容)
下载文件列表
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\keilkilll.bat
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\README.TXT
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\Hardware\rc522.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\Hardware\sys.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\Hardware\rc522.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\Hardware\led.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\Hardware\led.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\core_cm3.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\core_cm3.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\startup_stm32f10x_cl.s
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\startup_stm32f10x_hd.s
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\startup_stm32f10x_hd_vl.s
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\startup_stm32f10x_ld.s
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\startup_stm32f10x_ld_vl.s
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\startup_stm32f10x_md.s
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\startup_stm32f10x_md_vl.s
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\startup_stm32f10x_xl.s
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\system_stm32f10x.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\system_stm32f10x.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\stm32f10x.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\misc.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_adc.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_bkp.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_can.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_cec.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_crc.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_dac.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_dbgmcu.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_dma.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_exti.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_flash.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_fsmc.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_gpio.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_i2c.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_iwdg.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_pwr.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_rcc.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_rtc.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_sdio.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_spi.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_tim.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_usart.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_wwdg.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\misc.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_adc.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_bkp.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_can.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_cec.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_crc.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_dac.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_dbgmcu.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_dma.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_exti.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_flash.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_fsmc.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_gpio.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_i2c.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_iwdg.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_pwr.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_rcc.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_rtc.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_sdio.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_spi.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_tim.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_usart.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_wwdg.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LISTING\startup_stm32f10x_hd.lst
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LISTING\jiao_stm32.map
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\jiao_stm32.hex
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\jiao_stm32.build_log.htm
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\jiao_stm32.sct
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\main.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\stm32f10x_it.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\usart1.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\hw_config.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\usb_desc.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\usb_endp.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\usb_istr.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\usb_prop.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\hw_config.d
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\usb_pwr.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\bsp_systick.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\misc.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\usb_desc.d
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\stm32f10x_gpio.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\stm32f10x_rcc.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\stm32f10x_usart.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\hw_config.o
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\usb_prop.d
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\stm32f10x_exti.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\usb_pwr.d
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\main.d
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\usart1.d
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\usart1.o
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\stm32f10x_i2c.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\stm32f10x_it.d
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\startup_stm32f10x_hd.d
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\stm32f10x_it.o
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\usb_endp.d
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\core_cm3.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\README.TXT
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\Hardware\rc522.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\Hardware\sys.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\Hardware\rc522.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\Hardware\led.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\Hardware\led.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\core_cm3.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\core_cm3.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\startup_stm32f10x_cl.s
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\startup_stm32f10x_hd.s
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\startup_stm32f10x_hd_vl.s
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\startup_stm32f10x_ld.s
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\startup_stm32f10x_ld_vl.s
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\startup_stm32f10x_md.s
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\startup_stm32f10x_md_vl.s
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\startup_stm32f10x_xl.s
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\system_stm32f10x.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\system_stm32f10x.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\CMSIS\stm32f10x.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\misc.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_adc.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_bkp.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_can.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_cec.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_crc.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_dac.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_dbgmcu.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_dma.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_exti.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_flash.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_fsmc.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_gpio.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_i2c.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_iwdg.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_pwr.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_rcc.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_rtc.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_sdio.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_spi.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_tim.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_usart.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\inc\stm32f10x_wwdg.h
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\misc.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_adc.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_bkp.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_can.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_cec.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_crc.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_dac.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_dbgmcu.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_dma.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_exti.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_flash.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_fsmc.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_gpio.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_i2c.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_iwdg.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_pwr.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_rcc.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_rtc.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_sdio.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_spi.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_tim.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_usart.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LIB\src\stm32f10x_wwdg.c
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LISTING\startup_stm32f10x_hd.lst
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\LISTING\jiao_stm32.map
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\jiao_stm32.hex
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\jiao_stm32.build_log.htm
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\jiao_stm32.sct
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\main.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\stm32f10x_it.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\usart1.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\hw_config.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\usb_desc.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\usb_endp.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\usb_istr.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\usb_prop.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\hw_config.d
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\usb_pwr.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\bsp_systick.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\misc.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\usb_desc.d
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\stm32f10x_gpio.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\stm32f10x_rcc.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\stm32f10x_usart.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\hw_config.o
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\usb_prop.d
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\stm32f10x_exti.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\usb_pwr.d
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\main.d
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\usart1.d
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\usart1.o
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\stm32f10x_i2c.crf
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\stm32f10x_it.d
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\startup_stm32f10x_hd.d
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\stm32f10x_it.o
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\usb_endp.d
基于stm32f103rc的USB_HID模拟键盘并发送卡号成功\OUTPUT\core_cm3.crf