2019-12-22 13:44发布
cyxavr 发表于 2012-12-21 20:42 void uart_init(void) { GPIOD->DDR |= GPIO_PIN_5; //输出模式
最多设置5个标签!
谢谢你的指点。兄弟,你有STM8的串口单线传输例程吗?贴上来让我学习学习吧。
void uart_init(void)
{
GPIOD->DDR |= GPIO_PIN_5; //输出模式
GPIOD->CR1 &= ~GPIO_PIN_5; //浮动或漏极开路
GPIOD->CR2 &= ~GPIO_PIN_5;//输出最大速度2MHZ
UART1_DeInit();
uint16_t baud_div=0;
UART1->SR = (1<<5);
UART1->CR1 = (0<<4)|(0<<3)|(0<<2)|(0<<1)|(0<<0);
/*1位起始位 8位数据位 结束位由CR3设置 不使用奇偶校验 不使能奇偶校验中断*/
UART1->CR2 = (0<<7)|(0<<6)|(0<<5)|(0<<4)|(1<<3)|(1<<2);
/*使能发送和接收 接收中断 禁止发送中断*/
UART1->CR3 = 0; /*设置1位停止位 不使能SCLK*/
UART1->CR5 |= (1<<3); // 选择单线半双工模式
/*使用智能卡模式需要设置的,基本上保持默认就行了 */
/*设置波特率*/
baud_div =HSIClockFreq/BaudRate; /*求出分频因子*/
UART1->BRR2 = baud_div & 0x0f;
UART1->BRR2 |= ((baud_div & 0xf000) >> 8);
UART1->BRR1 = ((baud_div & 0x0ff0) >> 4); /*先给BRR2赋值 最后再设置BRR1*/
UART1->CR1 |= (1<<5); /*使能UART*/
}
然后在TXD 引脚加了个10K的上拉电阻.
就用6位的串口线图.
没加上10K上拉还能发的,现在加了,也不能发送了.其怪.
TXD发送时设置为推挽输出,接收时设置为输入,不就行了?
一周热门 更多>