YQ程序调试总结

20170726:
IIC与AT24C16通信实验:
1. IIC0_SDA连接GPIO3;IIC0_SCL连接GPIO2;
2. u8是unsigned char;u16是unsigned short;u16是unsigned int;
3. 公司芯片Project中LED_On和LED_BLINK函数中,如果在主函数中要调用这两个函数,必须先对延时进行初始化,因为LED_BLINK和LED_On函数调用了延时函数;
延时函数是用的系统时钟的滴答声,初始化时需要在主函数里再定义下系统时钟,如可以这样定义 #define SystemCoreClock 15,那么初始化延时函数时,就可以这样写delay_init(SystemCoreClock)
4. main.c*表示工程还没有编译;

0731:
学习串口的基本知识,基本概念,波特率的概念
0801:
串口实验
1. Company芯片,串口发送和接收函数中,一定要定义发送和接收的字长,如UART_Send(UART2,(u8*)sendbuff,10) 和UART_Receiver(UART2,(u8*)rx_buff,10)的第三个参数就是发送和接收的长度,写时一定要定义出来,在调用发送和接收函数时第三个参数应该是数字,而不是send_len之类的,自己写这个函数时犯了一个这样的错,以后谨记;
2. Company芯片的系统时钟,内部系统时钟不准确,如果用外部时钟要对时钟进行初始化,对应的函数是SystemInit( )和SystemClockSet(CLOCK_7816IN,CLOCK_DIV(0))。在SystemClockSet(CLOCK_7816IN,CLOCK_DIV(0))函数中,第一个参数是配置外部时钟的类型,这个可以从底下的库函数中直接查出来,第二个参数是分频系数,函数CLOCK_DIV(0)的参数0就是分频系数,系统默认的分频系数是在这个系数基础上加1,所以CLOCK_DIV(0)的分频系数是0+1=1;
3. 用外部时钟的话,要接到另外一个板子上的时钟,串口实验中,接到GPIO4(7816CLKIN)引脚,板子上本身带有的外部13.56M的时钟烧录程序时只能烧录一次,这是芯片本身带有的Bug;
4. 调试串口前,首先要配置时钟,程序如下:
pclk_freq = 13560000; //300-57600 £º 13958334 ; 115200-128000 : 15145761
baud_value_by_128 = (8u * pclk_freq) / baud_rate;
baud_value_by_64 = baud_value_by_128 / 2u;
baud_value = baud_value_by_64 / 64u;
fractional_baud_value = baud_value_by_64 - (baud_value * 64u);
fractional_baud_value += (baud_value_by_128 - (baud_value * 128u)) - (fractional_baud_value * 2u);
if(baud_value <= (uint32_t)UINT16_MAX)
{
if(baud_value > 1u)
{
/*
* Use Frational baud rate divisors
*/
/* set divisor latch */
UARTx->LCR |= DLAB;

                /* msb of baud value */
                UARTx->DMR = (uint8_t)(baud_value >> 8);
                /* lsb of baud value */
                UARTx->DLR = (uint8_t)baud_value;

                /* reset divisor latch */
                UARTx->LCR &= ~DLAB;

                /* Enable Fractional baud rate */
                UARTx->MM0 |= EFBR;

                /* Load the fractional baud rate register */
                UARTx->DFR = (uint8_t)fractional_baud_value;
        }
        else
        {
                /*
                 * Do NOT use Frational baud rate divisors.
                 */
                /* set divisor latch */
                UARTx->LCR |= DLAB;

                /* msb of baud value */
             
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值