你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 4468|回复: 1

一个简单的问题:关于STM8串口使用疑惑。。。

[复制链接]

3

主题

29

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2010-5-3 11:26:16 | 显示全部楼层 |阅读模式
一个简单的问题:关于STM8串口使用疑惑。。。
这几天在使用3合1板子,在用到串口时,不能收发数据不知道是什么原因;使用光盘例程也是这样,望大侠、高手们指点一下,
相关的代码如下:(STVD编译器)

时钟初始化
void CLK_Init(void)
{
    /* Configure HSI prescaler*/
    CLK_CKDIVR &= ~0x10;          /* 01: fHSI= fHSI RC output/2. */

    /* Configure CPU clock prescaler */
    CLK_CKDIVR |= 0x01;           /* 001: fCPU=fMASTER/2. */
}

串口初始化
void UART1_INT(void)
{
/* LINUART configured as follow:
          - BaudRate = 115200 baud  
          - Word Length = 8 Bits
          - One Stop Bit
          - No parity
          - Receive and transmit enabled
          - LINUART Clock disabled
    */
    CLK_PCKENR1 |= 0X08; //开启时钟 
    LINUART_CR1  = 0x00;
    LINUART_CR3  = 0x00;
    LINUART_BRR2 = 0x03;
    LINUART_BRR1 = 0x02;
    LINUART_CR2  = 0x2C;
}

I/O初始化
PD_DDR |= 0x3D;              /* Output.                  */
PD_CR1 |= 0xFD;              /* PushPull.                */
PD_CR2  = 0x00; 

主程序
void main(void)
{
_asm("sim");
CLK_Init();
GPIO_Init();

UART1_INT();

PD_ODR=0x04;

_asm("rim");

while (1)
{}
}

中断相关
@far @interrupt void UART1_RX_IRQHandler(void)
{
unsigned char ch;
ch=LINUART_DR;
if(ch==0x0A)PD_ODR ^= 0x01;
return;
}

{0x82, USART_TX}, /* irq20 */
{0x82, UART1_RX_IRQHandler}, /* irq21 */
 
<
回复

使用道具 举报

0

主题

5

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2010-7-13 01:08:26 | 显示全部楼层

RE:一个简单的问题:关于STM8串口使用疑惑。。。

void usart_init(u16 baudrate)
{
        u16 BD = 16000000/baudrate;
       
        UART1-&gt;BRR2 = (u8)((BD&gt;&gt;12)&amp;0xf0) + (u8)(BD&amp;0x0f);
        UART1-&gt;BRR1 = (u8)(BD&gt;&gt;4);
        //TXD
        GPIOD-&gt;DDR |=GPIO_PIN_5;//方向输出
        GPIOD-&gt;CR1 |= GPIO_PIN_5;//
        GPIOD-&gt;ODR |=GPIO_PIN_5;//数据为1数据无效
       
        //RXD
        GPIOD-&gt;DDR &amp;=~GPIO_PIN_6;//方向输入
        GPIOD-&gt;ODR |=GPIO_PIN_6;//数据为1       
               
        UART1-&gt;CR2 |= UART1_CR2_TEN|UART1_CR2_REN;//发送使能
       
        iscmdval=0;//命令接受有效
}
这个是可以用的,你试试看,在HJSTM8调试器上编译通过,在CYM8DVK上编译运行过,没有问题
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版