本帖最后由 xyzjacky 于 2017-9-13 14:08 编辑
有两个函数,都是使用库函数GPIO_WriteBit(注意添加其所在的头文件,#include "stm32f10x_gpio.h"),以并口方式进行8位写操作。
/*************************************************************************************
parallel_wrdata1:此函数是用于IO口编号的低位对应于数据的LSB位
入口参数:
*GPIOtypex:GPIO的类型,如:GPIOA,GPIOB,使用时可用GPIO_TypeDef*对其强制转换一下
GPIOnum:数据LSB位对应的IO编号,如GPIO_Pin_0,使用时注意不要越界了。
pdata:写入的并口数据
**************************************************************************************/
void parallel_wrdata1(void *GPIOtypex, INT16U GPIOnum, INT8U pdata)
{
INT8U i,j = GPIOnum;
for(i=0;i<8;i++)
{
if(pdata&0x01)
{
GPIO_WriteBit(GPIOC, j<<i ,Bit_SET );
}
else
{
GPIO_WriteBit(GPIOC, j<<i ,Bit_RESET );
}
pdata = pdata >> 1 ;
}
}
/*************************************************************************************
parallel_wrdata2:此函数是用于IO口编号的低位对应于数据的MSB位
入口参数:
*GPIOtypex:GPIO的类型,如:GPIOA,GPIOB,使用时可用GPIO_TypeDef*对其强制转换一下
GPIOnum:数据LSB位对应的IO编号,如GPIO_Pin_7,使用时注意不要越界了。
pdata:写入的并口数据
**************************************************************************************/
void parallel_wrdata2(void *GPIOtypex, INT16U GPIOnum, INT8U pdata)
{
INT8U i,j = GPIOnum;
for(i=0;i<8;i++)
{
if(pdata&0x01)
{
GPIO_WriteBit(GPIOC, j>>i ,Bit_SET );
}
else
{
GPIO_WriteBit(GPIOC, j>>i ,Bit_RESET );
}
pdata = pdata >> 1 ;
}
}
|