请问有没有stm32 的CH451的例程;我将clk din load 配置成推挽输出,dout配置成上拉输入;其余原版照样移植,按下按键 并不能触发dout;不知道是哪里出现了问题。
void CH451_Init()
{
GPIO_InitTypeDef GPIO_InitStructure; //GPIO
RCC_AHBPeriphClockCmd( RCC_AHBPeriph_GPIOB|RCC_AHBPeriph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN ; //上拉输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
DIN0; //先低后高,输出上升沿通知CH451选择4线串行接口
DIN1;
// DCLK1; //置为默认的高电平
// LOAD1;
// DOUT1; //置为输入
}
void CH451_Write(uint dat,uint length)
{
uint i;
LOAD0; //串行数据加载端置1
for(;length>0;length--)
{
if((dat&0x01)==0x01) //判断dat最低位是否为1
DIN1; // dat最低位为1的话就向din(串行数据输入)写1
else DIN0; // dat最低位为0的话就向din(串行数据输入)写0
DCLK0; //串行数据时钟线 置0
dat=dat>>1; //dat向右移动一位
DCLK1; //串行数据时钟线 置1
}
LOAD1;
}