×
嵌入式 > 技术百科 > 详情

STM8S103F3P6核心板学习笔记

发布时间:2022-01-26 发布时间:
|

开发板与仿真器连接:

新建一个项目:


    1-启动IAR,选择Project->Create New Projects…


    2-选择C


    3-然后选择路径并指定文件名,然后按Save保存


    4-然后选Project->Options…设置项目属性


    5-General options -> Target -> Device -> STM8S -> STM8S103F3P


    6-Debugger -> Setup -> Driver -> ST-LINK


    7-Debugger -> ST-LINK -> 选中Verify


编译运行项目:


    1-选择Project -> Make,编译项目


    (如果需要重新编译这个项目,可以选择Project -> Rebuild All)


    2-选择Project -> Download and Debug, 把编译好的文件下载到电路板


    3-选择Debug->Go运行程序


用IAR调试程序:


    Toggle Breakpoint: 设置断点,程序运行到断点时会自动暂停


    执行Download and Debug之后:


    Go: 运行整个程序


    Reset: 重置程序,回到第一行


    Step over: 执行一条语句


    View:


    Disassembly: 显示C语言对应的汇编


    Locals: 显示变量的值


    Registers: 显示寄存器的值


    Memory: 显示内存的内容


/***************************************************************************/


外部中断处理函数:(不是所有I/O都支持EXTI,reference manual P66)


外部中断设置:(头文件 #include

主要寄存器共12个,常用的有5个:


    UART_SR:保存串口控制器的状态


    UART_DR:保存接收或者发送的数据


    UART_CR2:设置串口模式


    UART_BRR1:设置波特率(baudrate)


    UART_BRR2:设置波特率(baudrate)


    其他:保持默认设置,即使用串口8-n-1模式



波特率具体取值可以计算,也可以参考Reference Manual的22.3.4节的Table 54


用特殊的语法定义,例如:


#pragma vector = UART1_T_TXE_vector

 

__interrupt void UART1_T_TXE_Handler(void) {}

 

#pragma vector = UART1_R_RXNE_vector

 

__interrupt void UART1_R_RXNE_Handler(void) {}

其中#pragma vector和__interrupt是固定的语法:


    UART1_T_TXE_vector指定这个中断处理函数是用来处理串口发送完毕中断


    UART1_R_RXNE_vector指定这个中断处理函数是用来处理串口接收中断


    UART1_T_TXE_vector和UART1_R_RXNE_vector在头文件iostm8s103f3.h中定义


    UART1_T_TXE_Handler()和UART1_R_RXNE_Handler()函数名可以是任意


    *中断处理函数的内容要尽可能的短小,以免影响主程序的运行


 


/**************************************************************/


定时器的时钟频率可以设置:


    Timer1的时钟频率 = fCK_PSC / (PSCR[15:0]+1)


    Timer2/3的时钟频率 = fCK_PSC / 2^PSCR[3:0]


Update Interrupt :


设置中断发生的周期:ARR(Auto-reload register)


    中断发生频率 = 定时器频率 / (AAR+1)


    产生中断的时间 = 1 / 中断发生频率


以Timer2为例,假设主频为16MHz


    TIM2_PSCR = 0x07;   // psc=7 => prescaler=2^7 =128 => 定时器频率=16MHz/128=125KHz



*退出中断前需要对相应的状态位清零。

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
激光跟踪仪市场2023年有望达5.216亿美元